Netty、Redis、Zookeeper高并发实战(1).docx
《Netty、Redis、Zookeeper高并发实战(1).docx》由会员分享,可在线阅读,更多相关《Netty、Redis、Zookeeper高并发实战(1).docx(5页珍藏版)》请在第一文库网上搜索。
1、还是以疯狂创客圈的“CrazyIM”实战项目中获取用户信息和用户登录这两个AP1的代理接口的调用为例。实践案例的代码如下:importcom.crazymakercirc1e.imServer.feignC1ient.UserAction;importfeign.Feign;importfeign,codec.StringDecoder;importorg.junit.Test;* 远程AP1的本地调用* Createdby尼恩at疯狂创客圈* /pub1icc1ass1oginzXctionTest/*测试登录/TeStpub1icvoidtest1ogin()UserActionactio
2、n=Feign,buiIderO/.decoder(newGsonDecoderO).decoder(newStringDecoderO).target(UserAction.c1ass,http:IoCaIhoSt:8080/USer);StringS=action.IoginAction(*zhangsan,“zhangsan);System,out.printIn(*s=+s);*测试获取用户信息*/QTestpub1icvoidtestGetById()UserActionaction=Feign,buiIderO/.decoder(newGsonDecoderO).decoder(n
3、ewStringDecoderO).target(UserAction.c1ass,*http:/1oca1host:8080/user*);Strings=action.getById(2);System,out.print1n(*s=+s);)最为核心的就一步,构建一个远程代理接口的本地实例。调用Feign.bui1der。构造器模式的方法,带上一票配置方法的链式调用。主要的链式调用的配置方法介绍如下:(1) OPtionS配置方法OPtionS方法指定连接超时的时长以及响应超时的时长。(2) rctryer配置方法retryer方法主要是指定重试策略。(3) decoder配置方法dec
4、oder方法指定对象解码方式,这里用的是基于String字符串的解码方式。如果需要使用JaCkSOn的解码方式,需要在pom.xm1中添加JaCkSOn的依赖。(4) c1ient配置方法此方法用于配置底层的请求客户端。Feign默认使用Java的HttpUR1Connection作为HTTP请求客户端。Feign也可以直接使用现有的公共第三方HTTP客户端类库,如APaCheHttpC1ient,OKHttp,来编写JaVa客户端以访问HnP服务。集成APaCheHttPCOmPonentSHttPC1ient的例子为:Feign,bui1der().c1ient(newApacheHttp
5、C1ient()集成OKHttP的例子为:Feign,bui1der().c1ient(newOkHttpC1ient().target(.)集成Ribbon的例子为:Feign,bui1derO.c1ient(RibbonC1ient.createO).target(.)Feign集成了Ribbon后,利用Ribbon维护了AP1服务列表信息,并且通过轮询实现了客户端的负载均衡。而与RibbOn不同的是,Feign只需要定义服务绑定接口且以声明的方法,可以优雅而简单地实现服务调用。(5) target方法这是构造器模式最后面的方法,通过它可以最终得到本地代理实例。它有两个参数,第一个是本地的
6、代理接口的C1aSS类型,第二个是远程UR1的根目录地址。第一个代理接口类很重要,最终Feign.bui1der()构造器返回的本地代理实例类型就这个接口的类型。代理接口类中每一个接口方法前用既equest1ine声明的UR1链接,最终都会加上target方法的第二个参数的根目录值,来形成最终的UR1target方法是最后面的一个方法,也就是说它的后面不能再链接调用其他的配置方法。主要的构造器方法就介绍这些,具体使用的细节以及其他的方法,请参见官网的说明文档。使用配置方法完成配置之后,再通过Feign.bui1der()构造完成代理实例,调用远程API,这就和调用JaVa函数一样简单了。总之,
7、如果是独立调用HTTP服务,那么尽量使用Feign。原因是一是简单;二是如果采用HttPCIient或其他相对较“重”的框架,对初学者来说编码量与学习曲线都会是一个挑战;三是既可以独立使用Feign,又方便后续SPringCOU1d微服务框架的继承。使用Feign代替HttpC1ient等其他方式,何乐而不为呢?12.6分布式的在线用户统计的实践案例顾名思义,计数器是用来计数的。在分布式环境中,常规的计数器是不能使用的,在此介绍ZooKeeper实现的分布式计数器。利用ZooKeeper可以实现一个集群共享的计数器,只要使用相同的path就可以得到最新的计数器值,这是由ZooKeeper的一致
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Netty Redis Zookeeper 并发 实战
