介绍
微服务架构应该是近年来,软件应用领域非常热门的概念
微服务的概念源于2014年3月Martin Fowler所写的一篇文章“Microservices”
原有架构的缺点
- 只改变一部分代码,需要重新构建并部署整个项目
- 负载均衡与扩容,需要将整个项目一起横向扩容
微服务架构的优点
- 改变部分代码,只需要将单个微服务构建,可以方便的做到敏捷上线
- 负载均衡与扩容,单个微服务负载过高,只需要将单个微服务扩容
- 每个开发者只需要负责某几个微服务模块,可以显著提高开发效率
- 只要规定好微服务模块之间的通信协议,比如使用protobuf,就可以用不同语言编译协议,这也就允许不同模块之间采用不同语言开发
关键技术点
- 微服务之间通信,协议的定义非常重要,可以使用protobuf
- 单个微服务的并发能力的提高,微服务之间需要通过tcp和udp协议进行通信,这就意味在发送数据和等待接受数据之间,这个进程是hang的状态。所以微服务架构需要使用多进程,多线程,多协程(进程和线程的调度都是内核态,而协程的调度可以由框架实现,在用户态,这大大减小了协程之间切换的效率)。腾讯内部的spp框架和开源的msec框架就采用了类似的概念。