什么是微服务
在没有微服务的时代,一个软件应用会将所有功能都开发和打包在一起。当用户访问量变大导致一台服务器无法支撑时就需要加服务器加负载均衡。后来发现把静态文件独立出来,通过CDN(内容分发网络)等手段进行加速,可以提升应用的
整体相应,单体应用架构就变成了:
上面的这些改变都只在部署方面进行了优化,避免不了单体应用的根本缺点:
- 代码臃肿,启动时间过长
- 回归测试周期长
- 容错性差
- 应用扩展困难
- 开发协作困难
在微服务架构之前还有一个概念,SOA(面向服务的体系架构),微服务应该是SOA的一种演进。微服务应该是具有单一职责的,一个微服务解决一个业务问题。微服务应该是面向服务的,将自己的业务能力封装并对外提供服务。
微服务典型架构
微服务架构,核心是为了解决应用微服务化之后的服务治理问题。
- 服务发现问题。一个微服务通过服务注册中心发现其他的微服务,所有的微服务都注册到服务注册中心,同时也可以从服务注册中心获取当前可用的服务清单。
- 服务配置管理问题。和服务注册中心一样,微服务架构里的配置中心用来维护每一个服务的配置文件。
- 微服务架构还有服务网关提供服务入口,用来处理外部应用调用服务时的事务处理。
微服务框架
目前比较流行的微服务框架主要是Spring Cloud和Dubbo。