代码拉取完成,页面将自动刷新
同步操作将从 开放金融技术/zbus 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#ZBUS服务总线解决的问题
跨平台/语言互访,代理模式解决遗留系统标准化 为什么不用WebService,除了效率问题之外,还有集中接入点/服务点的考虑
服务本身不侦听任何端口,仅仅创建连接到ZBUS总线,网络设备可做安全策略隔离,比如不允许APP网段直接连接数据库等
以ZBUS实现RPC为例,ZBUS内部都是Binary二进制格式处理数据,具体业务协议格式与ZBUS本身透明。ZBUS的Java API提供了一个默认的基于JSON协议的RPC实现
服务端可以接口化,也可单纯的POJO,没有任何限制,这里采用服务Interface。经过简单代理封装后,服务端与客户端代码几乎与ZBUS无关(透明化总线的存在)
服务接口,客户端只需要这个接口类
public interface ServiceInterface {
public String echo(String ping);
public int plus(int a, int b);
public byte[] bin();
}
服务具体实现 MyService中唯一给ZBUS侵入的是注解@Remote,用于方便Java API检查哪些方法需要注册,如果采用默认全部注册的规则,则完全可以与ZBUS无关
class MyService implements ServiceInterface {
@Remote()
public String echo(String ping){
return ping;
}
@Remote()
public int plus(int a, int b) {
return a + b;
}
@Remote
public byte[] bin() {
byte[] res = new byte[100];
for (int i = 0; i < res.length; i++)
res[i] = (byte) i;
return res;
}
}
最后一步是如何把上述服务注册到ZBUS总线,Java API可以很简单注册如下
public class RpcService {
public static void main(String[] args) throws InterruptedException {
WorkerPoolConfig cfg = new WorkerPoolConfig();
cfg.setService("MyRpc");
cfg.setBrokers(new String[] { "127.0.0.1:15555" });
int threadCount = 2;
WorkerPool wc = new WorkerPool(cfg);
System.out.format("Pooled RPC(%d) Run...\n", threadCount);
RpcServiceHandler handler = new RpcServiceHandler();
handler.addModule("ServiceInterface", new MyService());
wc.run(threadCount, handler);
}
}
###客户端
通过RpcFactory动态获取ServiceInterface的动态实现类
public class RpcFactoryExample {
public static void main(String[] args) throws Throwable {
ServiceInterface rpc = RpcFactory.getService(
ServiceInterface.class,
"zbus://localhost:15555/MyRpc");
String pong = rpc.echo("ping");
System.out.println(pong);
}
}
##三、ZBUS内部文件组成说明
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。