好处:不限地点。不限语言。服务分治,提升单个服务的可用性。
不同服务可以在不同地方,可以使用不同的技术语言。
单服务器只服务一个服务,提升服务的性能。
实质是socket+序列化,但是socket部分除了与服务调用方通讯外,还包含服务治理:服务的注册发现,服务负载均衡,服务重连等等
rpc框架的作用是封装rpc的复杂性,使得client和server调用远程服务像调用本地服务一样简单。
由于服务可能在不同地域,使用不同语言,甚至不同数据库。所以需要关注数据的一致性
如付款服务和优惠券服务,使用优惠券付款时需要确保付款成功和扣除优惠券成功。
这时候就需要分布式事务。
使用MQ来确保消息的送达
TCC:try,confirm,cancel
try阶段,先进行数据检查,(如,库存是否充足等等)。
confirm阶段:当所有检查通过,进行执行事务。
cancel阶段:取消执行操作。事务出错,回滚。
ZooKeeper, Etcd, Consul
多个相同服务,要均衡请求,需要使用到负载均衡。