1、什么是微服务
微服务即一种将一个单一应用程序开发为一组小型服务的方法设计,每个服务运行在自己的进程中,服务间通讯采用轻量级的通讯机制(通常用HTTP资源API),这些小型服务围绕业务能力构建并且可独立部署。
2、微服务架构具备以下特点
- 每个微服务独立运行在自己的进程里
- 一系列独立运行的微服务共同构建起整个系统
- 一个微服务只关注某个特定功能,每个服务为独立业务开发(如订单管理、用户管理)
- 微服务直接通过一些轻量的通讯机制进行通讯,例如:RESTful API
- 可使用不同的语言和数据存储技术
- 全自动部署机制
3、微服务架构的优点
- 易于开发维护
- 单个微服务启动较快
- 局部修改容易部署
- 技术栈不受限制
- 按需伸缩,易于扩展
4、微服务架构的缺点
- 运维要求高(更多的运维投入)
- 微服务构建的分布式系统固有的复杂性(系统容错、网络延迟、分布式事务等挑战)
- 接口调整成本高
5、微服务设计原则
- 单一职责原则:(指一个单元(类、方法或者服务只关注整个系统功能中单独、有界限的一部分))
- 服务自治原则:每个服务应具备独立的业务能力、依赖与运行环境(从开发、测试、构建、部署都是独立运行的)
- 轻量级通讯机制:微服务之间通过轻量级的通讯机制交互。(REST、AMQP、STOMP、MQTT)
- 微服务粒度:合理的粒度划分
6、技术选型
常见的微服务开发框架和解决方案:Spring Cloud、Dubbo、Dropwizard、Armada