- 1、本文档共38页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
RPC中间件io.spider概要设计
金融中间件spider概要设计
本文档的目的是定义远程过程调用中间件的所有设计规约,应实现的特性,相关的术语及其含义,软件的运行环境和兼容性要求。
最新版本
最新版本已更新至2.0.0-RELEASE,具体版本release-note参见io-spider\.spider\src\main\java\version.txt。
术语
spider:远程过程调用中间件,简称spider。下文均以spider代表远程过程调用中间件。
服务号:也称为功能号,可互换。长度为固定的八位ASCII字符,建议由八位数字组成。
目标
金融中间件需要满足以下要求:
能够根据请求包里面的功能号、子系统号进行静态路由;
支持多租户。能够根据请求包里面的机构号、产品(系统)号、版本号进行动态路由;saas架构的理想模式就是所有的业务实现均原生支持多租户。如果做不到原生支持多租户,按照一个租户一个runtime,也需要动态能够设置某个runtime提供对哪个客户的支持,这肯定不能让运维动态更改配置文件,他只需要中心化指定即可。即使能做到,也需要支持动态能够设置某个app提供对哪个客户的支持,因为一个app仅能够提供对有限个客户的支持,且mysql也不可能做到一个库支持所有。反之,如果做不到原生支持多租户,则app必须支持多数据源切换以及动态管理,因为通常一个客户通常难以大到需要一个app去支持的规模。
支持服务器集群中的各节点负载均衡(根据模式);
支持基于中心化管理的大型部署和独立管理的中小型部署;
支持自动重连到断开的服务器节点;
支持中心化剔除已删除的服务器节点;
支持中心化增加服务器节点;
支持中心化删除服务器集群;
支持中心化增加服务器集群;
一个可执行组件,支持任何时候节点(Work Node,WN)作为代理服务器(Node Broker,NB)(ANB:access node broker;CNB:core node broker)或处理服务器(Node Processor,NP)(PNP(产品NP),CNP(机构NP)),或从开发角度分为业务服务处理器(Business Node Processor,BSNP)、微服务处理器(MSNP,Micro Servicce Node Processor);
基于TCP/IP协议,支持客户端语言无关;
支持连接亲和性(没有亲和性,就不是一个好的负载均衡实现);
节点间技术上对等,即允许同时满足A是B的客户端,B??A的客户端,只要保证路由不形成死循环即可;
支持报文加密;
能够自动校验报文是否被篡改;
支持客户端认证功能;
支持报文压缩;
支持是否启用服务端功能;
能够中心化监控整个私募服务系统中所有中间件的运行状况;
支持基于Spring IOC注解方式的Java原生式远程服务调用;
最小化节点本地(集中化)配置;
支持多种序列化机制;
支持List泛型;
支持客户端异步请求与回调(主要用于定时任务和跑批场景);
支持服务可靠执行(可保证请求收到后不会丢失且肯定会按照提交的顺序(这是个复杂的策略,决定了并发性)执行,后续版本会考虑支持回调;
灵活的路由,任何服务都可以发送到任何集群(暂不支持到具体的节点)。
协议与兼容性
spider使用java语言开发,使用Spring作为IoC容器,采用TCP/IP协议,在此基础上,结合金融交易系统的特性进行针对性和重点设计,以更加灵活和高效的满足金融交易系统多租户、高可用、分布式部署的要求。
spider默认采用JSON作为序列化机制,后续版本可能会考虑支持protobuf(java/c++/c#均有类库支持)。
为了最大化性能以及稳定性,spider基于Oracle JDK1.8进行编译并应避免使用deprecated特性。
为了尽可能的适应各环境以及互联网应用,spider应能至少运行于tomcat/jboss应用服务器或原生java下。
部署模式
任何时候,Spider可运行于中心化管理模式或独立管理模式之一。
中心化管理模式:中心化模式要求必须启用服务中心。对于有几十个运行节点的大规模部署而言,通常增加或者减少一个节点/拆分服务需要进行的配置文件数量会很多,通常位于新增节点上游的各节点都需要修改相应的路由和对应的服务器参数。采用中心化管理模式,只需要登录服务中心修改相关配置即可,节点的变化会自动推送给相应的上游节点。运行于中心化管理模式时,可在服务中心查看整个平台中所有节点的健康状态、各服务的TPS、响应时间等。
独立管理模式:独立管理模式无需启用服务中心。当节点数量较少,比如整个平台不超过十个节点时,采用独立模式通常会比中心化管理模式更简单。运行于独立管理模式时,可通过spider提供的restful api查看当前节点的运行状态。
文档评论(0)