BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

微服务最佳实践

| 作者 孙镜涛 关注 2 他的粉丝 发布于 2014年7月10日. 估计阅读时间: 2 分钟 | GMTC大前端的下一站,PWA、Web框架、Node等最新最热的大前端话题邀你一起共同探讨。

微服务并不是新事物,因为很早之前就有很多应用程序这样设计并实现了。微服务实际上仅仅是一个新的术语,它描述了一种拥有某些特征并且遵循某些原则的软件系统的架构风格。微服务甚至被称为轻量级或细粒度的SOA。Russ Miles在介绍使用Java平台设计与构建抗脆弱的微服务时将微服务定义为单一目的的服务,它只做一件事,并且粒度划分良好,支持系统的演化以及你认为在运行期与设计期重要的东西。

那么我们应该怎样设计微服务才能让它抗脆弱进而支持系统的演化呢?来自于Red Hat的软件工程师Bilgin Ibryam最近发表了一篇博客,他认为创建微服务时最常见的实践包括以下几个方面:

  1. 体积小。微服务最基础的原则就是每一个应用程序都比较小,它只做一件事情并且要把它做好。
  2. 拥有事务边界。明确定义消息属于哪里是非常重要的,哪怕整个系统的状态并不确定。
  3. 自监控。微服务应该对外暴露它本身以及它所依赖的各种资源的状态的信息。用户能够通过JMX等方式获取统计数据,例如处理消息的平均、最短和最长时间,成功的和失败的消息数,内存的使用情况等。
  4. 容错性。每一个微服务都能失败或者无响应一段时间,但是这并不会导致整个系统崩溃。微服务应该具有容错性并且能够恢复。
  5. 高度可配置。通过配置拥有不同的自由度。
  6. 支持智能终端。 微服务喜欢RESTish协议和轻量级的消息而不是Web服务。
  7. 可测试。消息流的测试和业务POJO的测试相互隔离。
  8. 单独配置。 微服务最重要的特性就是每个服务都是独立运行的,最常见的形式就是作为单独的Java应用程序。
  9. 语言中性。小而独立部署的应用程序让开发人员能够为指定的任务选择最合适的语言。

如果你想了解更详细的信息,可以查看Bilgin Ibryam的博文。如果你也拥有一些使用微服务的心得并且想和大家分享,那么就联系我们吧


感谢郭蕾对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT