微服务
架构类型
单体架构
有一些致命缺点:
- 一旦某个服务宕机,会引起整个应用不可用,隔离性差
- 只能整体应用进行伸缩,浪费资源,可伸缩性差
- 代码耦合在一起,可维护性差
微服务架构
通过上述的架构,解决了单体架构的弊端。但同时引入了新的问题:
- 代码冗余
- 服务和服务之间存在调用关系
微服务方案
代码冗余问题
场景
服务未拆分之前,公共的功能有统一的实现,比如认证,授权,限流等,但是服务拆分之后,每一个服务可能都需要实现一遍。
方案
- 由于为了保持对外提供服务的一致性,引入了网关的概念,由网关根据不同的请求,将其转发到不同的服务(路由功能),由于入口的一致性,可以在网关上实现公共的一些功能
- 可以将公共的功能抽取出来,形成一个新的服务,比如统一认证中心
服务之间调用
场景
服务拆分后,服务和服务之间发生的是进程和进程之间的调用,服务器和服务器之间的调用。
那么就需要发起网络调用,网络调用我们能立马想起的就是http,但是在微服务架构中,http虽然便捷方便,但性能较低
方案
这时候就需要引入RPC(远程过程调用),通过自定义协议发起TCP调用,来加快传输效率。
服务治理
场景
每个服务由于可能分布在成千上百台机器上,服务和服务之间的调用,会出现一些问题,比如,如何知道应该调用哪台机器上的服务,调用方可能需要维护被调用方的地址,这个地址可能很多,增加了额外的负担,这时候就需要引入服务治理.
方案
服务治理中有一个重要的概念服务发现,服务发现中有一个重要的概念叫做注册中心。
每个服务启动的时候,会将自身的服务和ip注册到注册中心,其他服务调用的时候,只需要向注册中心申请地址即可。