RPC(Remote Promote Call): 一种进程间通信方式。允许像调用本地服务一样调用远程服务。
RPC框架的主要目标就是让远程服务调用更简单、透明。RPC框架负责屏蔽底层的传输方式(TCP或者UDP)、序列化方式(XML/JSON/二进制)和通信细节。开发人员在使用的时候只需要了解谁在什么位置提供了什么样的远程服务接口即可,并不需要关心底层通信细节和调用过程。
RPC结构图如下:
从头开始挨个分析解释:
用户访问时是根据域名来访问的, 光根据域名是找不到服务器的地址的(www.baidu.com服务器在哪?), 访问要到达的第一个地方就是DNS服务器, 由DNS告诉你你访问的这个域名对应的是哪个(些)IP, 从图中可以看到所有的访问都会经过DNS, 所以DNS是负载最重的地方, 不过不用担心DNS的硬件贼强(人家有钱, 就是干这个活的), 所以DNS可以帮我们做第一次请求分发,比如把60%的请求发给一台nginx服务器, 剩下40%分给另一台nginx
防火墙是整个互联网公司直接与外界交互的部分, 经过防火墙的筛选后请求才能进入公司内部进行求请求的处理
nginx是用来负载均衡的 , 即使nginx是C写的性能高也有承受限度, 所以并发量过高的时候需要DNS帮忙做这个总的分发者, 分发到多台nginx同时工作, 比如阿里双十一的时候每秒的并发访问量可以超亿, 绝对不是一台nginx能承受的 , nginx根据访问的域名/IP/端口把请求发到对应的业务集群系统中
业务系统每个业务都是一个甚至多个系统集群, 这些集群只负责接受请求, 调用所需要的服务(微服务