城市直播房产教育博客汽车
投稿投诉
汽车报价
买车新车
博客专栏
专题精品
教育留学
高考读书
房产家居
彩票视频
直播黑猫
投资微博
城市上海
政务旅游

ApacheCuratorFramework教程(二)Spr

12月28日 飞虹谷投稿
  ApacheCuratorFramework教程(二)SpringBoot实现服务发现服务器(RestfulAPI)版本说明
  Springboot:2。7。8
  Curator:5。0。4
  JDK:17特别说明
  Springboot版本不能使用3。x以上,我使用3。0。2测试,不通过,目前还没有研究具体原因,暂时使用2。7。8!CuratorServiceDiscoveryServer的依赖curatorxdiscoveryserver是基于JAXRS实现的,所以Springboot的web依赖要使用pringbootstarterjersey。curatorxdiscoveryserver已经提供了Restfulapi的代码,我们无需自己写,只需要配置即可。项目说明Maven依赖?xmlversion1。0encodingUTF8?projectxmlnshttp:maven。apache。orgPOM4。0。0xmlns:xsihttp:www。w3。org2001XMLSchemainstancexsi:schemaLocationhttp:maven。apache。orgPOM4。0。0https:maven。apache。orgxsdmaven4。0。0。xsdmodelVersion4。0。0modelVersionparentgroupIdorg。springframework。bootgroupIdspringbootstarterparentartifactIdversion2。7。8versionrelativePath!lookupparentfromrepositoryparentgroupIdcn。programtalkgroupIdcuratorservicediscoveryserverartifactIdversion0。0。1SNAPSHOTversionnamecuratorservicediscoveryservernamedescriptioncuratorservicediscoveryserverdescriptionpropertiesjava。version17java。versionpropertiesdependenciesdependencygroupIdorg。springframework。bootgroupIdspringbootstarterjerseyartifactIddependency!curator相关依赖dependencygroupIdorg。apache。curatorgroupIdcuratorrecipesartifactIdversion5。4。0versiondependencydependencygroupIdorg。apache。curatorgroupIdcuratorxdiscoveryserverartifactIdversion5。4。0versiondependencydependencygroupIdorg。apache。curatorgroupIdcuratortestartifactIdversion5。4。0versionscopetestscopedependencydependencygroupIdorg。springframework。bootgroupIdspringbootstartertestartifactIdscopetestscopedependencydependencygroupIdorg。projectlombokgroupIdlombokartifactIddependencydependenciesbuildpluginsplugingroupIdorg。springframework。bootgroupIdspringbootmavenpluginartifactIdpluginpluginsbuildproject服务发现服务器配置
  需要初始化几个Bean。packagecn。programtalk。importlombok。SneakyTimportorg。apache。curator。framework。CuratorFimportorg。apache。curator。framework。CuratorFrameworkFimportorg。apache。curator。retry。ExponentialBackoffRimportorg。apache。curator。x。discovery。ServiceDimportorg。apache。curator。x。discovery。ServiceDiscoveryBimportorg。apache。curator。x。discovery。details。JsonInstanceSimportorg。apache。curator。x。discovery。server。contexts。StringDiscoveryCimportorg。apache。curator。x。discovery。server。rest。DiscoveryCimportorg。apache。curator。x。discovery。strategies。RoundRobinSimportorg。springframework。beans。factory。annotation。Vimportorg。springframework。context。annotation。Bimportorg。springframework。context。annotation。Cimportjavax。ws。rs。ext。ContextRCurator配置类authorprogramtalk。cnConfigurationpublicclassCuratorConfig{zk服务器连接地址,172。29。240。53:2181,172。29。240。53:2182Value({cn。programtalk。zkservers})publicStringzkS服务发现在Zk中的根路径Value({cn。programtalk。basepath})publicStringbasePCuratorFramework客户端returnBeanpublicCuratorFrameworkcuratorFramework(){CuratorFrameworkcuratorFrameworkCuratorFrameworkFactory。newClient(zkServers,newExponentialBackoffRetry(1000,3));curatorFramework。start();returncuratorF}ServiceDiscovery实例returnSneakyThrowsBeanServiceDiscoveryStringserviceDiscovery(){returnServiceDiscoveryBuilder。builder(String。class)zk路径。basePath(basePath)zk客户端。client(curatorFramework())是否监听实例。watchInstances(true)序列化。serializer(newJsonInstanceSerializer(String。class))。build();}returnBeanpublicDiscoveryContextStringdiscoveryContext(){returnnewStringDiscoveryContext(serviceDiscovery(),newRoundRobinStrategy(),30);}BeanpublicContextResolverDiscoveryContextStringresolver(){returnaClassdiscoveryContext();}}
  上面这个类,主要配置了CuratorFramework客户端(用于连接Zookeeper),ServiceDiscovery(服务发现配置),DiscoveryContext(服务发现上下文)等。API配置
  curator已经实现了RestfulApi,他是个抽象类,名字是DiscoveryResource,使用者需要自己创建类并继承DiscoveryResource。packagecn。programtalk。importorg。apache。curator。x。discovery。server。rest。DiscoveryCimportorg。apache。curator。x。discovery。server。rest。DiscoveryRimportorg。springframework。stereotype。Cimportjavax。ws。rs。Pimportjavax。ws。rs。core。Cimportjavax。ws。rs。ext。ContextR自定义MyResource,继承DiscoveryResource,DiscoveryResource是Curator提供的服务发现服务器的RestfulApi。Path()ComponentpublicclassMyResourceextendsDiscoveryResourceString{publicMyResource(ContextContextResolverDiscoveryContextStringresolver){super(resolver。getContext(DiscoveryContext。class));}}注册API类
  上面创建的MyResource类需要注册到Jersey中。packagecn。programtalk。importcn。programtalk。api。MyRimportorg。glassfish。jersey。server。ResourceCimportorg。springframework。context。annotation。CJersey配置类authorprogramtalk。cnConfigurationpublicclassJerseyConfigextendsResourceConfig{publicJerseyConfig(){将自定义的Api类注册register(MyResource。class);}}application。yamlcn:programtalk:zookeeper服务信息zkservers:172。29。240。53:2181服务发现的根路径(zookeeper中)basepath:servicediscoveryAPI测试
  api请求数据结构请看官方说明:https:gitwipus。apache。orgreposasf?pcurator。fcuratorxdiscoveryserverREADME。hbHEADputService
  注册或者修改服务
  请求数据如下:PUTv1serviceproductserviceproductinstanceid2HTTP1。1Host:localhost:8080ContentType:applicationjsonContentLength:224{name:productservice,id:productinstanceid2,address:10。20。30。40,port:1234,payload:产品服务payload,registrationTimeUTC:1325129459728,serviceType:STATIC}
  看下Zk里的节点的信息
  可以看到productservice服务里有一个实例productinstanceid1
  我再添加几个实例(修改id即可)。
  总共添加了三个实例。
  用同样的方法再添加另一个订单服务(orderservice)PUTv1serviceorderserviceorderinstanceid1HTTP1。1Host:localhost:8080ContentType:applicationjsonContentLength:220{name:orderservice,id:orderinstanceid1,address:10。20。30。40,port:1234,payload:订单服务payload,registrationTimeUTC:1325129459728,serviceType:STATIC}
  再查看下zk节点情况
  也创建了三个实例。removeService
  删除服务下的实例
  测试删除orderservice的orderinstanceid1实例
  DELETEv1serviceorderserviceorderinstanceid1HTTP1。1Host:localhost:8080
  查看订单服务信息
  确实已经被删除掉。get
  获取服务下的单个实例
  GETv1serviceorderserviceorderinstanceid2HTTP1。1Host:localhost:8080getAllNames
  查询所有服务名
  GETv1serviceHTTP1。1Host:localhost:8080getAll
  查询服务下的所有实例
  GETv1serviceorderserviceHTTP1。1Host:localhost:8080getAny
  随机获取某个服务下的某个实例
  GETv1anyserviceorderserviceHTTP1。1Host:localhost:8080项目地址
  github:https:github。comProgramTalk1024curatorservicediscoveryserver。git
  说明文档
  https:itlab1024。comarchives208。html运行说明
  如果想运行该项目,首先去application。yaml中修改zk的地址。
投诉 评论 转载

周文雍陈铁军刑场上的婚礼让这刑场作为我们新婚的礼堂,让反动派的枪声作为我们新婚的礼炮吧!电影《刑场上的婚礼》,男女主人公在生命最后时刻的结婚誓言曾感动了几代中国观众。电影中两位意志坚如钢铁的烈士的原型……今年出的荣耀50和3年前的小米8在AI模式下拍夜景看谁的效果帮朋友买的荣耀50到手了,由于他出去旅游还没回来,由我先帮他保管几天,于是今天晚上散步的时候我就带出去了,闲着无聊就和我的小米8一起拍点夜景来做个对比,个人觉得小米拍的夜景接近……为何说篮网可以送走欧文,只因他的缺席对篮网输赢几乎没有影响布鲁克林篮网的主教练史蒂夫纳什表示,本赛季欧文将不会打主场的比赛。这对于篮网来说是巨大的打击,毕竟球队打造三巨头就是为了夺冠,可是如今三巨头三缺一,球队的巨星组合的实力也是被看……8K时代来临,开博尔五代万兆光纤HDMI五代2。1解锁新体验随着5G网络的迅猛发展,硬件设备的不断迭代,视频画面的分辨率也是指数级提升,有一次我在视频网站上重新搜小时候看过的《西游记后传》,以前看没觉得分辨率有多差,现在看觉得满屏幕的马……郭晶晶与家人看儿子演出,8岁霍中曦多才多艺,妹妹已是小粉丝10月11日下午,郭晶晶在个人社交平台分享了一组大儿子霍中曦演出的照片,并发文写道:学习音乐是对心灵的磨练和唤醒。郭晶晶还表示自己很赞成孩子们学习音乐,修身静心,锻炼心智,只要……兰州这种特色美食,18元一大碗,出租车师傅的深夜食堂说起大西北,大家普遍回想起几个地方,比如陕西、甘肃、宁夏等,因为几个省市加起来土地面积很大,所以以大来形容。而这其中的甘肃,给人们的印象很是荒凉,实则不然,它不仅是中华文明的发……4个日本兵长跪在中国,日本多次要求拆除,中国先应3个条件对于每一个到云南滇西旅游的朋友来说,当地人经常会提起云之南,国有殇的说法。这里所说的殇,就是特指1945年修建的腾冲国殇墓园。在墓园里有一块写有倭冢字样的石碑,4个日本士兵雕像……ApacheCuratorFramework教程(二)SprApacheCuratorFramework教程(二)SpringBoot实现服务发现服务器(RestfulAPI)版本说明Springboot:2。7。8Cura……卧龙凤雏,台蛙在日本点六6碗拉面3个人吃,被骂惨反怨人死脑筋台民众赴日旅游6人吃3碗拉面被骂实在是笑不活了,全世界包括台湾在内的中国人大过年的喜庆节日呢,几位台胞在日本福冈6人吃三碗拉面的新闻给大陆吃瓜群众带来了些许额外的欢声笑语……官方声明大众没有收购江淮!近日,有投资者向江淮汽车提问:中德合作战略对江淮汽车有何影响?这是否会进一步促进德国大众收购江淮汽车?针对以上问题,江淮汽车于1月16日在互动平台作出回应:大众汽车(中国……中国八大菜系(简介)中国八大菜系(简介)文字编辑齐州邑人中国自古就是民以食为天,饮食文化已达几千年。吃在中国,神州大地的菜品千姿百态,主要有八大菜系,这是人们根据各地方的菜肴,按不同的……贝因美及其两大股东谢宏袁芳被强制执行超3亿1月16日,贝因美集团有限公司及其两大股东谢宏、袁芳新增一则被执行人信息,因未按时履行法律义务被法院强制执行,执行标的3。16亿余元,执行法院为浙江省杭州市中级人民法院。……
CBA第29轮,福建浔兴133130上海久事,上海男篮爆冷加支持DDR5,超频更简单,小雕够给力,技嘉B760M小雕Wi湖人vs76人比赛概况穿墙术存在?科学家首次观察到量子隧穿效应阿拉伯杀法最古老的国际象棋杀王技巧今日NBA雄鹿想要4次轮换戈登,76人东部第二,绿军豪取9连CINNO2022年中国智能手机销量或同比下降198年内首次市人大代表王双开发高价值数字应用场景让数字经济成为高质量发展旗舰三星S23Ultra续航如何?小白测评数据库3。0实测文行乐见012黑龙江哈尔滨张康阳也学他老爹,欠了3亿欧元不还,为什么不向老爹求救?分享几张珍藏iPhone魔改壁纸圣旨上“奉天承运皇帝诏曰”的来生活中的个心理学案例创业从到我踩过的个坑魔兽世界怀旧服战士双持单手斧和单手剑,再同时点出斧专和剑专,数学七年级第二学期的测试题一次厨艺秀永远别低估女生与你共患难的决心有弹性造句用有弹性造句大全全球财经连线国常会再提降准,上市公司提质三年行动方案出炉,美林生斌大舅子也翻车?网曝其与女网友聊天记录,喝酒露营内容暧昧闯关前夕施压?两大巨头稀土价格拉锯战又现新插曲掌握婴儿生病的种信号

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找