微服务架构快速指南


这是Ketan Parmar发表的Microservice Architecture - A Quick Guide

什么是软件架构?

软件架构是一个系统的基本组织,体现在系统的各个组件(如web服务器,应用服务器,数据库,存储,通信等),组件之间的关系,以及系统的外部环境(如发布环境,共享服务器,专用服务器,云发布等)。 还包括指导系统设计和演化的原理。

什么是微服务软件架构?

微服务就是开发一个单纯的,小型的,有意义的功能作为一个单一服务。每个服务都有自己的进程,通过轻量级的协议进行通信,发布在一个或者多个服务器上。

微服务架构的好处

  • 每个微服务都是一个小的,专注实现一个特定功能或商务需求的服务
  • 微服务可以由一个小的开发组独立的发布(一般2到5个开发者)
  • 微服务松耦合,这意味着服务之间可以独立的开发和部署
  • 微服务可以由不同的开发语言开发
  • 微服务允许持续集成工具容易且灵活的自动集成部署(如Jenkins, Hudson, bamboo 等).
  • 新的团队成员可以很快融入到开发中
  • 微服务易于理解, 开发人员容易修改和维护, 这是因为这种架构下服务之间的代码都是独立的,团队很小,目标明确
  • 微服务允许你充分采用最新的技术(框架,编程语言,编程实践等)
  • 微服务仅包含商业逻辑代码,不会混合HTML, CSS等其它UI组件
  • 规模扩大时微服务很容易扩展
  • 微服务可以部署在中低档的服务区上
  • 易于继承第三方的服务
  • 每个微服务都有自己的存储能力。但这一点依赖你的需求, 微服务也可以使用同一的数据库如Mysql, Oracle

微服务的不足

  • 微服务可能带来过多的操作
  • 要求要有DevOps技能
  • 可能会有重复的工作
  • 分布式系统管理起来相对复杂
  • 由于分布式部署的问题分析问题比较困难
  • 当服务很多的时候管理整个系统就很麻烦

微服务适合什么样的需求?

当你需要支持跨屏的应用(比如桌面,web,手机,智能电视,可穿戴设备或者未来你不知道的情况)。
(译者按:微服务岂止这些?当你的应用规模急速扩大时,需要将已有的架构进行重构,减少系统组件的紧耦合,就可以考虑微服务的架构)

哪些公司使用了微服务的架构

很多规模很大的物联网公司都采用了微服务的架构,如Twitter, Netflix, Amazon, eBay, 国内的大型互联网公司如淘宝等,都从最初的铁板一块,组件都整体糅合在一起架构演化成微服务的架构。
(译者按:据公开的资料, 07年淘宝开始走向服务化)

微服务之间如何通信

如何实现依赖你的需求。一般开发人员会使用HTTP/REST + JSON或Protobuf,但是法无定式,有很多的选择。

为何现在人人都在谈论微服务?

SOA的概念都有15年了,随着RESTful的web服务的流行和更便利的JSON格式的广泛采用, 创建可以互相调用服务更加的容易和快捷。

幻灯片

http://www.infoq.com/presentations/Micro-Services

视频

(youtube,需要翻墙)

图片:Monolithic vs Modular vs SOA

补充:更多的阅读资料

  1. http://martinfowler.com/articles/microservices.html : James Lewis & Martin Fowler关于微服务的介绍,发表于2014年
  2. http://www.infoq.com/cn/news/2014/07/microservice-learning-resources :infoq的郭蕾整理的微服务的资料,很多有价值的资料
  3. http://yobriefca.se/blog/2013/04/28/micro-service-architecture/ : James Hughes 2013年的关于微服务架构的介绍
  4. https://www.safaribooksonline.com/library/view/building-microservices/9781491950340/ :Oreilly的关于微服务实践的电子书
  5. http://microservices.io/patterns/microservices.html : 居然建立了关于微服务架构的网站
  6. http://www.infoq.com/articles/microservices-intro#anch114964
  7. http://www.infoq.com/cn/news/2015/04/single-app-micro-service:单体应用与微服务优缺点辨析