1. 微服务介绍
微服务是一种架构模式,提倡将单一应用程序划分为一组小的服务,服务之间相互协调、相互配合,为用户提供最终价值。
2. 微服务特点
- 将整个系统拆分为多个小服务器,每个服务专注于做一件事情
- 服务之间使用轻量级的通讯机制
- 各个服务之间松耦合
- 每个服务可以独立部署
3. 微服务优势
1. 技术异构型
- 每个服务服务都是一个相对独立的个体,可以各自选择适合于自身的技术来实现。
- 为一些新技术提供了试验场,可以在单个服务中使用成熟后再推广到其他服务。
2. 弹性
- 系统中的某个服务出现问题时减少问题扩散程度。
- 可以针对单个服务实现可用性解决方案或者降级方案。
3. 可扩展性
- 可以针对单个服务进行功能与性能的扩展。
4. 简化部署
- 每个服务的部署是独立的,因此可以更快的对单个服务的特定代码进行修改并部署。
5. 与开发组织结构相匹配
- 微服务的开发方式可以避免出现巨大的代码库,以各个服务的形式开发可以获得更理想的团队大小和生产力
6. 可组织性
- 整体系统会对外开放很多接口供外部使用,当情况发生变化时,可以在系统内部使用不同的方式构件应用,而系统只提供一个粗粒度的接口供外部使用
7. 对可替代性的优化
- 可以在需要是以更低的成本对某些服务进行重写或直接删除不再使用的服务
3. 微服务的劣势和挑战
1. 复杂度
- 每个服务需要拆分成多个服务进行部署,服务之间需要通过网络进行通讯,对性能有一定的影响
- 数据端一致性需要受到严格管控
- 复杂度的提升导致系统开发成本提高
2. 运维成本
- 因为每个服务需要独立配置、部署、监控、日志收集,增大了运维成本
3. 自动化部署的挑战
- 因为每个服务都需要独立部署,因此需要使用自动化部署的方式。
4. 服务间依赖测试的挑战
- 需要进行服务间的依赖测试,在服务较多时,如何有效地测试使服务之间能够按照接口的约定正常工作
5. 服务之间的依赖管理的挑战
- 需要清晰地展示各个服务之间的依赖关系
4. 微服务与SOA的实现对比
微服务 | SOA |
---|---|
团队级,自底向下开展实施 | 企业级,自顶向下开展实施 |
一个系统被拆分为多个服务,细粒度 | 服务由多个子系统组成,粗粒度 |
无集中式总线,松散的服务架构 | 企业服务总线,集中式的服务架构 |
集成方式简单(HTTP\REST\JSON) | 集成方式复杂(ESB\WS\SOAP) |
各服务可以独立部署 | 单块架构系统,相互依赖,部署复杂 |