Why Microservices?
回答这个问题前,我们先看下之前大行其道的单体架构 - Monolithic Architecture,对于非专业人士来讲,所谓的单体架构,其就像一个超大容器,容器内集中包含了该应用的所有软件组件,并且组件与组件之间紧密耦合。
对于这种架构,其缺陷或者说潜在不足也很明显,简单总结如下:
- 臃肿僵化不灵活: 单体架构很难采用多种技术
- 可靠性较差: 这种架构最明显的特征就是牵一发而动全身,一个小小的功能失效可能会导致整个系统的不可用
- 扩展性较差: 应用本身无法轻易的进行扩展,一旦需要进行对某个或者某些功能进行扩展或者更新,我们需要重新构建整个系统
- 阻碍连续性的开发: 应用的许多功能特性无法被同时构建和部署
- 开发速度慢: 单体应用的开发耗时较长,因为我们需要依次构建相应的功能模块
- 不适用于复杂的应用: 复杂应用的各个功能特性紧耦合
何为微服务?
微服务,又称微服务架构,这种架构聚焦业务领域,将应用通过一个个小而自治的服务组织起来。在微服务架构中,每一个服务都是自包含的且唯一实现某个单一业务功能。
微服务与传统单体架构的区别
为了便于理解,我们这里以我们常见的电子商务应用为示例说明,很明显,传统的单体架构下,所有服务共享一个应用实例并且共享同一个后台数据库,而微服务架构下则应用本身业务功能划分为不同的微小服务,每个服务都自行处理各自业务数据,处理不同的业务功能。
微服务架构
接下来,我们进一步了解下微服务架构究竟有哪些特征以及什么是微服务,看下面的架构图例。
- 设备不同,各客户端所使用的服务也不尽相同,比如:检索、构建、配置抑或其他管理功能
- 基于各自业务领域的不同,每个服务都相对独立,而且会根据实际被进一步细化为更小粒度的服务
- 每个服务都有各自的负载均衡和运行环境,并且各自拥有相对独立的数据源
- 服务间的通信通常采用无状态通信协议,比如:REST或者消息总线
- 借助服务发现机制,服务消费方与提供方可以彼此无忧通信,并可进行一些自动化及监控操作
- 服务与客户端的交互都是通过服务网关进行的
- 所有内部联通节点均与服务网关相连,即一旦你连接到服务网关,你即可访问网关后的所有服务端口
微服务的主要特征
- 解耦
- 组件化
- 业务功能化
- 自治
- 持续集成
- 单一责任
- 去中心化
- 敏捷
微服务架构的优势
- 独立部署
- 独立开发
- 故障隔离
- 混合技术栈
- 细粒度级扩展,即单个组件可以自由横向扩展
微服务架构设计最佳实践
原文链接: