所谓微服务泛指由原来的大型系统,拆分成一个个独立的小系统,而且独立部署、独立运行,而我们所要关注的是 服务是如何注册的,服务与服务之间如何调用的,服务之间的事务如何处理的,面对并发访问时如何限流、熔断的,以及如何负载均衡的,
微服务时代
1、系统架构演变:从互联网兴起到目前为止,系统架构大致经历了几个过程:单体应用>垂直应用>分布式架构>SOA架构>到了目前很火的微服务。
1.1 单体应用架构
优点:1、架构简单。
2、相对于小型项目,开发简单、易于维护
3、服务部署在一个tomcat上,后期维护方便
缺点:1、对于大型项目来说,维护困难
2、模块之间相互紧密耦合,单点容错率低
3、无法针对某一个模块进行水平扩展或者优化
2、垂直应用
优点:系统分之后,就可以进行水平扩展和优化,提高了单点容错性。
缺点:系统之间无法相互调用,会有一部分代码冗余(如:前台系统要想调用个人管理中心的服务,
只能自己单独在写一套重复逻辑)
3、分布式架构
优点:抽取公共代码为服务层,增强代码复用性
缺点:调用关系复杂,维护困难。
4、SOA架构
优点:使用服务治理中心帮我们维护复杂的调用关系
缺点:服务有依赖性,可能会因为一个服务的问题,导致多个系统不可用(拆分的不够彻底)
5、微服务
优点:1、服务原子化拆分,独立打包、部署和升级,保证每个微服务清晰的任务划分,
利于扩展
2、微服务之间采用Restful等轻量级Http协议相互调用
缺点:分布式系统开发的技术成本比较高(容错、分布式事务等)
那么好了,既然知道了微服务架构,那么就需要关注几个问题,而这几个问题是贯穿整个微服务的条件。
微服务架构问题点
1、微服务众多,如何管理/治理(服务治理、注册中心(服务注册、发现、剔除))
2、微服务众多,服务之间如何通信(restful/rpc)
3、微服务众多,客户端如何访问他们(网关)
4、微服务中的某个服务出现问题,应该如何处理/容错()
5、微服务中某个服务一旦出现问题,应该如何排错?(链路追踪)