目录
由来
独立系统,SOA服务切换时间长,成本高,不够稳定
是什么
- 一套小服务来开发单个应用,每个服务运行在自己的进程中,使用HTTP API等轻量级机制通信
- 服务可以使用不同编程语言实现,不同数据存储技术
- 最低限度集中管理
本质
- 目的是有效拆分应用,实现敏捷开发和部署
- inter-operate:定义好系统边界和接口,系统内部耦合和沟通,最终呈现出统一风格界面,权限管理,安全策略等等
和单体架构的区别
- 单体架构代码量大,维护困难;微服务每个模块相当于单独项目,代码明显减少,好解决问题
- 单体架构所有模块使用同一数据库,存储方式单一(岂不是不安全?);微服务架构每个模块可以有自己的存储方式(redis,mysql等等),数据库也是单个模块对应的数据库
- 单体架构所有模块开发使用的技术一样;微服务开发模式更灵魂,可以有不同的开发技术
适用项目
按照业务本身独立性来划分,如果是非常底层的(操作系统内核,存储系统,网络系统,数据库系统等)就不要使用微服务,否则造成集成工作量急剧上升
开发框架
Spring Cloud(流行)
http://projects.spring.io/spring-cloud
Dubbo
http://dubbo.io
Dropwizard
http://www.dropwizard.io (关注单个微服务的开发)