目录
欢迎加入RPC学习分享(Java)社区~
https://bbs.csdn.net/forums/RPC_Study?typeId=112251
RPC框架性能优化思路
RPC的调用流程如下,可以在动态代理,序列化框架,路由算法,线程模型,服务器性能等几部分考虑。
动态代理对比
2种动态代理方式的性能测试(JDK1.8 JDK > Cglib)_trigger333的博客-CSDN博客
序列化框架对比
序列化方式介绍和性能比较 (kryo fastjson hessian jdk)_trigger333的博客-CSDN博客
线程模型
RPC框架业务线程池的添加方法和作用_trigger333的博客-CSDN博客
路由层性能
RPC是什么?
RPC是远程过程调用(Remote Procedure Call)的缩写形式。通俗的理解就是我调用了一个函数func(args), 只不过这个func不在本地,需要远程访问这个函数,把我的args(输入参数)通过网络发送给这个函数所在的机子,然后由这个机子调用func(args),再将返回值通过网络发送回来。
应用场景
其实如果我们开发简单的应用,是用不着 RPC的。当我们的应用访问量增加和业务增加时,发现单机已无法承受,此时可以根据不同的业务(划分清楚业务逻辑)拆分成几个互不关联的应用,分别部署在不同的机器上,此时可能也不需要用到 RPC 。
随着我们的业务越来越多,应用也越来越多,应用与应用相互关联调用,发现有些功能已经不能简单划分开,此时可能就需要用到 RPC。
比如,我们开发电商系统,需要拆分出用户服务、商品服务、优惠券服务、支付服务、订单服务、物流服务、售后服务等等,这些服务之间都相互调用,这时内部调用最好使用 RPC ,同时每个服务都可以独立部署,独立上线。
也就说当我们的项目太大,需要解耦服务,扩展性强、部署灵活,这时就要用到 RPC ,主要解决了分布式系统中,服务与服务之间的调用问题。
RPC 优点
- 跨语言(C++、PHP、Java、Python ...)
- 协议私密,安全性较高
- 数据传输效率高
- 支持动态扩展
写RPC框架需要具备哪些知识?
RPC原理(摘自:什么情况下使用 RPC ? - 知乎)
RPC 架构主要包括三部分:
- 服务注册中心(Registry),负责将本地服务发布成远程服务,管理远程服务,提供给服务消费者使用。
- 服务提供者(Server),提供服务接口定义与服务实现类。
- 服务消费者(Client),通过远程代理对象调用远程服务。
服务提供者启动后主动向服务注册中心(Registry)注册机器IP、端口以及提供的服务列表;
服务消费者启动时向服务注册中心(Registry)获取服务提供方地址列表。