分布式服务调用策略:
1. LVS
中间代理,负载均衡系统做转发
优点:代价低,可控性强
缺点:流量压力大+必由之路,鸡蛋不在一个篮子里
应用:面向C端
2. 名称服务
名称服务器:负责收集服务器地址信息,提供这些地址信息给请求发起方
各调用方机器:自己根据策略进行负载均衡
优点:名称服务不会直接影响功能+减少了中间的带宽消耗
缺点:代码升级较复杂 - > 当拉起一台服务器,需要把新的ip赋值给所有的请求发起方。而且需要有一定的节奏。
应用:内部服务注册服务
3. 规则服务器(一般不会用在无状态的服务场景)
不与请求处理的机器交互只负责把规则提供给请求发起的机器
优缺点:与名称服务类似
小结:
a. 公司的服务治理工具采用的是方案二(推测依据:请求发起方有文件存储了所有的被调用方的ip,而且实时在改变)
b.这里面突然发现以前辛辛苦苦看的tomcat服务器源码并不是没有作用:
对于被调用方,在方案二和方案三的情况下都需要对某端口进行监听,然后对于请求进行 解析->调用->返回。这不就是一个完整的服务监听与相应的流程么? 无非就是请求的解析和返回编码不太一样,核心流程还是差不多的。
NIO监听->解析请求->线程池反射调用方法->处理返回值