1、微服务简介
微服务是一种软件架构模式。
它提倡将单一应用程序划分成一组小的服务,服务之间相互协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务和服务之间采用轻量级的通信机制相互沟通(通常是基于HTTP的Restful API).每个服务都围绕着具体的业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建
2、特征
小:粒度小,专注一项业务
独:独立部署,服务独立测试、部署、升级、发布
轻:轻量级通信
松:松耦合。对语言和工具要求松,可以选择最契合业务的语言
3、三维扩展模型
X轴,服务实例水平扩展,保证可靠性与性能;
Y轴,功能的扩展,服务单一职责,功能独立;
Z轴,数据分区,数据独立,可靠性保证;
4、部署粒度
VM(不推荐)
Docker
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架包括系统。
5、基础设施
基础设施自动化(devops、自动化部署)
6、需要解决的难点
分布式事务:2阶段、3阶段、tcc
分布式一致性:全局的分布式事务;事件驱动
分布式调度
分布式全局id生成
服务命名、注册、发现
服务治理
服务间通信