RPC简单Demo
2019-03-11 本文已影响0人
kumangcao
code:https://github.com/ice-kumangcao/JavaDemo/tree/master/src/main/java/rpc
RPC-远程过程调用,这里就不详细的解释概念了(百度即可)
RPC是概念性名词,可以通过不同的技术实现
这个Demo就是用Java JDK代理
+socket
实现RPC
这个Demo分为三个角色:消费者
,生产者
,中间件(算个角色吧)
- 消费者用来消费生产者提供的服务或产品,中间件算是管理生产者,为消费者提供生产者
- 消费者和生产者之间遵从统一的接口,中间件提供消费者使用和生产者注册的方法
- 中间件内部实现了生产者到消费者的运输桥梁,具体怎么运输,出了问题怎么办由中间件管理
消费者消费的最终是生产者的资源,消费者只得到一个产品,
映射到代码中就是,消费者执行一个接口的方法,由相应的生产者来执行,
消耗的是生产者的内存和CPU时间,消费者只得到一个结果。
为什么要SOA?
MVC架构中所有的业务都写到了一个应用中,如果并发增加,一台tomcat无法支持,只能进行横向扩展,但是在此种情景下,所以的业务都是平级的,享受相同的系统资源,但是想想,不同的业务在使用频率和系统资源消耗肯定是不同的。
如果并发继续增加,还是只是单纯的横向扩展只会浪费系统的资源,让使用频率高的无法支持更高的并发,让使用频率低的默默占用系统资源。如果能够将服务从应用中剥离出来,就能合理的为服务提供合适的资源。
将服务剥离出来,应用和服务沟通需要走网络传输,网络传输肯定会增加服务调用时间
和增加风险,这些都是需要中间件来提供解决方案的
:sob: