1 什么是微服务

微服务(Microservices)--Martin Flower

  • 将单一的应用程序划分为一组小的服务。

图片说明

2 微服务与微服务架构

1、微服务

  • 强调的是服务的大小,关注的是某一个点,是具体解决某一个问题的一个服务应用。
  • 狭义地看,IDEA中的一个个Module可以看做是一个个微服务工程。

2、微服务架构

  • 微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间相互协调、互相配合,为用户提供最终价值。
  • 每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相协作。每个服务都围绕着具体的业务进行构建,并且能够被独立地部署到生产环境中。
  • 另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建。

3 微服务优缺点

1、优点

  • 每个服务足够内聚、足够小,代码容易理解,这样能聚焦一个指定的业务功能或业务需求(单一职责)。
  • 开发简单,开发效率提高,一个服务可能就是专一地只干一件事。
  • 微服务能够被小团队单独开发,这个小团队由2~5开发人员组成。
  • 微服务是松耦合的,是具有功能意义的服务,无论是在开发阶段或部署阶段都是独立的。
  • 微服务能使用不同的语言开发。
  • 易于与第三方集成,微服务允许容易且灵活的方式集成自动部署,通过持续集成工具,如jenkins、Hudson、bamboo。
  • 微服务易于被一个开发人员理解、修改和维护。这样小团队能够更关注自己的工作成果,无须通过合作才能体现价值。
  • 微服务允许你融合最新技术。
  • 微服务只是业务逻辑的代码,不会和HTML、CSS或其他界面混合。
  • 每个微服务都有自己的存储能力,可以有自己的数据库,也可以有统一的数据库。

2、缺点

  • 开发人员要处理分布式系统的复杂性。
  • 多服务运维难度,随着服务的增加,运维的压力也在增大。
  • 系统部署依赖。
  • 服务间通信成本。
  • 数据一致性。
  • 系统集成测试。
  • 性能监控。
  • ……

4 微服务技术栈

图片说明

5 为什么选择SpringCloud作为微服务架构

1、选型依据

  • 整体解决方案和框架成熟度。
  • 社区热度。
  • 可维护性。
  • 学习曲线。

2、当前各大IT公司用的微服务架构有哪些?

  • 阿里巴巴:Dubbo + HFS。
  • 京东:JSF。
  • 新浪:Motan。
  • 当当:DubboX。
  • ……