代码什么的,可以发个链接:http://www.cnblogs.com/ChrisMurphy/p/6550184.html
上面链接所用到的技术:java原生序列化,socket通信,动态代理,反射机制。
平时用到接触的都很少,每次用过之后就忘记,所以要想真正的达到拿来就用的境界那就:#刻意练习#吧
下面介绍。。写不动。。。
就写写自己的理解:
主要的角色有一下几种:
服务提供者:
运行在服务端,负责提供接口定义和服务实现类。(其实就像现实生活中专门提供服务的,比如说酒店提供的服务是休息睡觉,饭店提供的服务是解决温饱),这里提供的服务由程序猿自己定义,就是说想提供什么样的服务给别人就基于服务去实现
服务发布者:
这个发布者呢,就是让服务让别人能够知晓,不仅仅是本地自己调用,可以发布出去让更多需要服务的人知道。给服务提供者这个角色提供服务。
本地服务代理:
同样的,当消费者需要一样服务的时候,现实生活中的中介。就是类似于这个代理,能够帮助消费者去找哪里能够提供哪样的服务,并告诉消费者。消费者只负责消费以及享受这个服务就可以了。
那么现在就好理解
什么是RPC?--remote procedure call
让消费者只需要了解谁在什么位置提供了什么样的远程服务接口即可,无需关心底层的细节,就像现实中去饭店吃饭,你只要吃就好,无需知道饭是几个厨师做的,菜是几个人洗的一样。。。
RPC框架面临的挑战:
1:服务越来越多,服务的URL管理变得十分困难,(解决方法:通过服务注册中心,动态注册和发现服务,并且消费者在本地缓存服务提供者的列表,防止注册中心宕机,降低F5等硬件负载均衡的依赖)
2:服务间的依赖关系变得复杂,结果导致分不清哪个应用要在哪个应用之前启动,以及之间的调用关系,(通过分布式消息跟踪系统可视化展示服务调用链,用于依赖分析 、业务调用路径梳理等,帮助架构师清理不合理的服务依赖,防止业务架构腐化)
3:服务器的调用量越来越大,服务的容量问题舅暴露出来了,某个服务需要多少机器支撑、什么时候该加机器,(采集服务调用KPI数据,进行汇总和分析,通过计算得出服务部署实例和服务器的配置规格)
、、、、、、、