资源描述:
《DSF分布式服务框架设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、DSF分布式服务框架设计技术创新,变革未来目录DSF产生背景DSF介绍服务治理实践背景统一服务框架多服务框架:58同城RPC框架、Dubbo框架、……维护成本高统一服务治理注册中心、监控、流控、调用跟踪DSF介绍RPC框架核心流程Service网络通讯(send、receive)ClientRetObjretObj=proxy.fun(a,b)接口代理序列化协议接口实现(线程池中调用真实服务)协议网络通讯2.入参对象序列化5.从协议包中获取结果对象流1.创建服务代理对象6.反序列化为结果对象协议包数据流
2、1.接收协议包数据交给协议层处理2.从协议包中获取接口签名和入参对象流3.反序列化为入参对象4.返回服务结果对象序列化5.结果对象序列化3.将协议版本,协议类型,序列化方式,序列化结果对象流等,组成一个协议包,交给通讯层3.将协议版本,协议类型,序列化方式,方法签名,入参对象流等,4.接收协议包数据组成一个协议包,交给通讯层发送交给协议层处理DSF介绍整体架构DSFClientJava动态代理负载均衡网络通讯上下文管理DSF序列化DSF协议DSFServer(容器)网络通讯过滤器异步处理监控权限Dtracker
3、pluginDSF注册中心DSF服务治理管理平台DSF介绍协议版本号协议总长度请求上下文编号消息类型(Request,Response,Exception,Reboot…)序列化方式(同城,DSF,Hession…)压缩算法加解密算法消息体定长包头(公共属性)+变长包体(业务扩展)DSF介绍序列化四元组(参考BER(basicencodingrules)):类型、对象总字节长度、对象属性序号、对象属性值序号sortid属性值Intnum;112序号sortidIntage;223Element(自定义Cla
4、ss类)TypeIdLength15序号sortidStringname;5673“张三”589ListtypeidListsizeelement1sortid=1sortid=2Intnum;Intage;Stringname;sortid=32typeidlengthelement2lengthsortid=1sortid=2Intnum;Intage;typeidList对象序列化样例:DSF介绍跨语言、跨平台客户端Java客户端DSF序列化DSF协议C&C++客户端DSF序列化DSF协议TCP长连接服务
5、端(JavaDSF容器)DSF序列化DSF协议客户端、服务端,使用相同的序列化和协议DSF介绍高可用服务多节点部署健康检查过载丢弃(请求阈值)服务平滑重启降级处理客户端重试机制&故障转移客户端超时处理DSF介绍负载均衡静态权重配置;服务节点动态请求超时权重调整;安全性IP黑白名单方法调用授权服务分组DSF介绍易用性运维部署bin(启动脚本,全局配置文件)
6、-‐-‐-‐dsf(启动脚本)
7、-‐-‐-‐dsf_config.xml
8、-‐-‐-‐dsf_log4j.xmlREADME(相关说明)doc
9、s(文档)log(日志文件)lib(DSF容器自身依赖的jar)service
10、-‐-‐-‐lib(服务依赖的公共jar)
11、-‐-‐-‐deploy(DSF服务部署目录)
12、-‐-‐-‐paycenter(支付中心服务)
13、-‐-‐-‐paycenter.1.0.0.jar
14、-‐-‐-‐dsf_config.xml
15、-‐-‐-‐dsf_log4j.xml
16、-‐-‐-‐order(订单服务)
17、-‐-‐-‐order.1.0.0.jar
18、-‐-‐-‐dsf_config.xml
19、-‐-‐-‐dsf_log4j.xmlDSF
20、介绍易用性实时监控count[
21、secondnum
22、methodmethodName]showmethodcalltimesinnumsecondssecond:innumsecondsstatisticsonce(numdefault1)method:forstatisticsmethodexample:countexample:count
23、second3
24、methodgetInfotime
25、grepabc[
26、column-‐tkda]showmethodexecutetimegrep:condition
27、column:showcolumna-‐>allt-‐>timek-‐>keyd-‐>descriptionexample:time
28、grepgetInfoexample:time
29、grepgetInfo
30、column-‐tkhelp*showhelpquit*quitmonitorjvm[option][time][count]*[option]:-‐gc