订阅博客
收藏博客
微博分享
QQ空间分享

谚语,轻量级RPC结构 harpc,飘零电影

频道:人人中彩票更新版 标签:酸汤肥牛的做法武则天墓 时间:2019年05月14日 浏览:301次 评论:0条

根据Thrift的跨言语、高可用、高功能、轻量级的RPC结构。

功用介绍

  • 跨言语通讯
  • 便利的使Java、Python、C++三种程序能够彼此通讯
  • 负载均衡和容灾处理
  • 便利的完成使命的分布式处理
  • 支撑服务的水平扩展,主动发现新的服务节点
  • 能够兼容各种反常情况,如节点的反常down机
  • 可视化办理
  • 经过服务办理系杭州旅游景点统能够便利检查服务状况和统9420计信息
  • 与原生thrift通讯
  • 支撑与原classic生thrift服务进行通讯

与业界计划的谚语,轻量级RPC结构 harpc,漂荡电影比照

  • 与thrift、avro、hessian比较,harpc支撑了高可用,而且militantly愈加易用
  • 与dubbo比较,harpc支撑了跨言语,而且更轻量级
  • 与ice比较,harpc功能更高,而且更轻量级

规划思路

HARPC的中心思维是高可用,那么在确保高可用的基础上,还需要具有跨言语、高功能、可视化及轻量级等特性。所以,咱们在规划之初就挑选了根据 thrift开发的计划,底层通讯运用thrift来确保高功能和跨言语,然后HARP谚语,轻量级RPC结构 harpc,漂荡电影C来确保高可用和可视化,而且尽量坚持简略,来到达轻量级的需求。

  • 全体结构

* 阐明
* 四个部分:client(客户端)、server(服务端)、registry(注册中心,目刘德华回应杜汶泽事情前为zookeeper集群)、admin(服务办理体系)
* client和server又包括: your code(用户代码)、harpc(中心结构,包括Java、Python、C++三个版别)、thrift gen(thrift生成的源码文件,用于底层通讯)

Java版别依靠

  • 挑选最新的harpc的安稳版别,拜见Tags
  • 引荐运用maven工程增加相关依靠
  • pom中增加harpc依靠,直接在pom中增加如下依靠(已上传至中心库房)

com.baifendian
harpc
1.2

运用过程

(1) thrift 文件界说

# file: demo.thrift
namespace java com.bfd.harpc.demo.gen
service EchoService {
string echo(1: string msg);
}

(2) thrift --gen ja罗大发va demo.thrift

将生成的gen-java文件夹下的文蒜苗炒鸡蛋件拷贝到mav谚语,轻量级RPC结构 harpc,漂荡电影en工程的src/main/java目录下 留意: Thrift程序的版别主张运用0.9.2及以上

(3) 项目目录结构

src/main/java
├── com
│ ├── bfd
│ ├── harpc
│ ├── demo
│ ├── ServerDemo.java #服务端
│ ├── ClientDemo.java #客户端
│ ├── EchoServiceImpl.java #接口完成类
│ ├── gen #thrift生谚语,轻量级RPC结构 harpc,漂荡电影成文件
│ ├── EchoService.java
src/main/resources
├── server.properties #server装备文件
├愿望森林── client.properties #cli西葫芦怎么做好吃ent装备文件
pom.xml

(4) Server端装备

#file:server.properties
#zookeeper衔接字符串
registry.connectstr = 172.18.1.22:2181,172.18.1.23:2181,172.18.1.24:2181
#授权字符串,格局为:用户名:暗码
registry.auth = admin:admin123
#zookeeper会话超不时朱安婕间,单位ms
registry.面食做法大全带图解timeout = 3000
#服务名(全称):命名空间$服务名简称
server.service = com.bfd.harpc.demo$EchoService
#服务端口
server.port = 19090
#服务名
server.name = harpc-demo-server
#服务负责人
server.owner = dongsheng.fan@baifendian.com
#是否发送计算信息到zk
server.monitor = true
#发送的时刻距离,单位为s
server.interval = 60
#......

(5) Server代码示例

String[] configs = n声响沙哑ew String[] { "classpath:server.properties" }; // 装备文件途径
EchoServ谚语,轻量级RPC结构 harpc,漂荡电影iceImpl impl = new EchoSer谚语,轻量级RPC结构 harpc,漂荡电影viceImpl();
try {
Server server = new Server(configs, impl);
server.star金牛男t(); // 发动服务,非堵塞
// 堵塞主线程
synchronized (ServerDemo.class) {
while (running) {
try {
ServerDemo.class.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
} catch (Exception e) {
e.pri欲潮ntStackTrace();
}

(6) Client端装备

#file:client.properties
#zookeeper衔接字符串
registry.connectstr = 172.18.1.22:2181,172.18.1.23:2181,172.18.1.24:2181
#zookeeper会话超不时刻,单位ms10086官网
registry.timeout = 3000
#握笔的正确姿态直连到不同的server,多个server以分号离隔(若装备address,则运用直连方法)
#client.address=172.18.1.22:19090;172.18.1.23:19090
#服务名
clien深坑酒店t.name = harpc-demo-client
#服务负责人
client.owner = dongsheng.fan@baifendian.com
#服务名(全称):命名空间$服务名简称
client.service = com.bfd.harpc.demo$EchoService
#thrift生成文件的Iface接口
client.iface = com.bf谚语,轻量级RPC结构 harpc,漂荡电影d.harpc.demo.gen.EchoService$Iface
#client到serve饺子皮怎么做r的超不时刻,单位为ms
client.timeout = 10000
#重试次数
client.retry = 1
#......

(7) Client代码示例

String[] configs =赶集兼职网 new String[] { "classpath:client.properties" };
try {
Client client = new Client(configs);
// 留意:署理内部现已运用衔接池,所以这儿只需要创立一个实例,多线程同享
// 特别情况下,能够答应创立多个实例,但禁止每次调用前都创立一个实例
Iface echoIface = client.createProxy();
for (int i = 0; i < 1000; i++) {
try {
System.out.println(echoIface.echo("world"));
} catch (Exception e) {
e.printStackTrace();
}
}
} catch (Exception e) {
e.printStackTrace();
}