Hegel2011的博客

读书 - 工作 - 生活 - 笔记

微服务笔记

微服务是Martin Fowler定义的一个术语,出自 https://martinfowler.com/articles/microservices.html

是伴随着敏捷开发和云服务部署流行而兴起的一种架构。微服务架构风格[1]是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制(通常用HTTP资源API)。这些服务围绕业务能力构建并且可通过全自动部署机制独立部署。这些服务共用一个最小型的集中式的管理,服务可用不同的语言开发,使用不同的数据存储技术。

具备的特征包括:

  • 水平扩展服务能力时,可以扩展只需要扩展的模块而不是全部
  • 组件多以服务的形式提供
  • 团队多按业务能力/功能组建
  • 团队始终围着产品,而不是做完了就丢给运维
  • smart endpoints and dumb pipes,其实就是管道扁平化,针对SOA中部分总线太过只能而言
  • 去中心化的管理,微服务意味着可以自治化,而不是谈标准化
  • 可以多个编程语言同时使用,只要保持彼此间通信简单(http+lightweight messaging)
  • 数据存储也是去中心化的,Polyglot Persistence,存储/数据库也是每个服务自己定
  • 基础设施自动化程度高,实现持续提交和持续集成
  • 开发者和用户间会更容易建立更多的联系,要持续关注软件如何帮助用户提升业务能力,而不是把软件看成是将要完成的一组功能
  • 针对失效的设计,使用服务作为组件的一个结果是,应用程序需要被设计成能够容忍服务失效,如断路器模式
Included file 'twitter_sharing.html' not found in _includes directory