游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

微服务的那些事(四)初始SpringCloud

  1。初始SpringCloud
  微服务是一种架构方式,最终肯定需要技术架构去实施。
  微服务的实现方式很多,但是最火的莫过于SpringCloud了。为什么?后台硬:作为Spring家族的一员,有整个Spring全家桶靠山,背景十分强大。技术强:Spring作为Java领域的前辈,可以说是功力深厚。有强力的技术团队支撑,一般人还真比不了群众基础好:可以说大多数程序员的成长都伴随着Spring框架,试问:现在有几家公司开发不用Spring?SpringCloud与Spring的各个框架无缝整合,对大家来说一切都是熟悉的配方,熟悉的味道。使用方便:相信大家都体会到了SpringBoot给我们开发带来的便利,而SpringCloud完全支持SpringBoot的开发,用很少的配置就能完成微服务框架的搭建
  4。1。简介
  SpringCloud是Spring旗下的项目之一,官网地址:http:projects。spring。iospringcloud
  Spring最擅长的就是集成,把世界上最好的框架拿过来,集成到自己的项目中。
  SpringCloud也是一样,它将现在非常流行的一些技术整合到一起,实现了诸如:配置管理,服务发现,智能路由,负载均衡,熔断器,控制总线,集群状态等等功能。其主要涉及的组件包括:
  netflixEureka:注册中心Zuul:服务网关Ribbon:负载均衡Feign:服务调用Hystix:熔断器
  下图所示的架构图,只是其中一部分。
  2版本
  SpringCloud的版本命名比较特殊,因为它不是一个组件,而是许多组件的集合,它的命名是以A到Z的为首字母的一些单词组成:
  我们在项目中,会是以Finchley的版本。
  其中包含的组件,也都有各自的版本,如下表:
  接下来,我们就一一学习SpringCloud中的重要组件。
  3创建一个微服务项目。
  Spring脚手架创建工程
  借助于Spring提供的快速搭建工具:
  填写项目信息:
  添加web依赖:
  添加mybatis依赖:
  填写项目位置:
  生成的项目结构:
  依赖也已经全部自动引入:lt;?xmlversion1。0encodingUTF8?4。0。0com。leyou。demouserservicedemoartifactId0。0。1SNAPSHOTjaruserservicedemoDemoprojectforSpringBootorg。springframework。bootspringbootstarterparentartifactId2。0。1。RELEASEproject。build。sourceEncodingUTF8project。build。sourceEncodingproject。reporting。outputEncodingUTF8project。reporting。outputEncodingjava。version1。8java。versionorg。springframework。bootspringbootstarterjdbcartifactIdorg。springframework。bootspringbootstarterwebartifactIdorg。mybatis。spring。bootmybatisspringbootstarterartifactId1。3。2mysqlmysqlconnectorjavaartifactIdruntimeorg。springframework。bootspringbootstartertestartifactIdtestorg。springframework。bootspringbootmavenpluginartifactId
  当然,因为要使用通用mapper,所以我们需要手动加一条依赖:tk。mybatismapperspringbootstarterartifactId2。0。2编写代码。
  添加一个对外查询的接口:RestControllerRequestMapping(user)publicclassUserController{AutowiredprivateUserServiceuserService;GetMapping({id})publicUserqueryById(PathVariable(id)Longid){returnthis。userService。queryById(id);}}
  Service:ServicepublicclassUserService{AutowiredprivateUserMapperuserMapper;publicUserqueryById(Longid){returnthis。userMapper。selectByPrimaryKey(id);}}
  mapper:MapperpublicinterfaceUserMapperextendstk。mybatis。mapper。common。Mapper{}
  实体类Table(nametbuser)publicclassUserimplementsSerializable{privatestaticfinallongserialVersionUID1L;IdGeneratedValue(strategyGenerationType。IDENTITY)privateLongid;用户名privateStringuserName;密码privateStringpassword;姓名privateStringname;年龄privateIntegerage;性别,1男性,2女性privateIntegersex;出生日期privateDatebirthday;创建时间privateDatecreated;更新时间privateDateupdated;备注privateStringnote;省略getters和setters}
  属性文件,这里我们采用了yaml语法,而不是properties:server:port:8081spring:datasource:url:jdbc:mysql:localhost:3306mydb01username:rootpassword:123hikari:maximumpoolsize:20minimumidle:10mybatis:typealiasespackage:com。leyou。userservice。pojo
  项目结构
  5。1。3。启动并测试:
  启动项目,访问接口:http:localhost:8081user7
  也就是通过上面的过程。我们的服务提供者已经创建好了。服务的调用者。
  3。2。1。创建工程
  与上面类似,这里不再赘述,需要注意的是,我们调用userservice的功能,因此不需要mybatis相关依赖了。
  pom:lt;?xmlversion1。0encodingUTF8?4。0。0com。leyou。demouserconsumerdemoartifactId0。0。1SNAPSHOTjaruserconsumerdemoDemoprojectforSpringBootorg。springframework。bootspringbootstarterparentartifactId2。0。1。RELEASEproject。build。sourceEncodingUTF8project。build。sourceEncodingproject。reporting。outputEncodingUTF8project。reporting。outputEncodingjava。version1。8java。versionorg。springframework。bootspringbootstarterwebartifactIdcom。squareup。okhttp3okhttpartifactId3。9。0org。springframework。bootspringbootmavenpluginartifactId
  5。2。2。编写代码
  首先在启动类中注册RestTemplate:SpringBootApplicationpublicclassUserConsumerDemoApplication{BeanpublicRestTemplaterestTemplate(){这次我们使用了OkHttp客户端,只需要注入工厂即可returnnewRestTemplate(newOkHttp3ClientHttpRequestFactory());}publicstaticvoidmain(String〔〕args){SpringApplication。run(UserConsumerDemoApplication。class,args);}}
  然后编写UserDao,注意,这里不是调用mapper查数据库,而是通过RestTemplate远程查询userservicedemo中的接口:ComponentpublicclassUserDao{AutowiredprivateRestTemplaterestTemplate;publicUserqueryUserById(Longid){Stringurlhttp:localhost:8081userid;returnthis。restTemplate。getForObject(url,User。class);}}
  然后编写userservice,循环查询UserDAO信息:ServicepublicclassUserService{AutowiredprivateUserDaouserDao;publicListquerUserByIds(Listids){ListusersnewArrayList();for(Longid:ids){Useruserthis。userDao。queryUserById(id);users。add(user);}returnusers;}}pre
  编写controller:RestControllerRequestMapping(consume)publicclassConsumerController{AutowiredprivateUserServiceuserService;GetMappingpublicListconsume(RequestParam(ids)Listids){returnthis。userService。queryUserByIds(ids);}}pre
  5。2。3。启动测试:
  因为我们没有配置端口,那么默认就是8080,我们访问:http:localhost:8080consume?ids6,7,8
  一个简单的远程服务调用案例就实现了。
  5。3。有没有问题?
  简单回顾一下,刚才我们写了什么:useservicedemo:一个提供根据id查询用户的微服务consumerdemo:一个服务调用者,通过RestTemplate远程调用userservicedemo
  流程如下:
  存在什么问题?在consumer中,我们把url地址硬编码到了代码中,不方便后期维护consumer需要记忆userservice的地址,如果出现变更,可能得不到通知,地址将失效consumer不清楚userservice的状态,服务宕机也不知道userservice只有1台服务,不具备高可用性即便userservice形成集群,consumer还需自己实现负载均衡
  其实上面说的问题,概括一下就是分布式服务必然要面临的问题:服务管理如何自动注册和发现如何实现状态监管如何实现动态路由服务如何实现负载均衡服务如何解决容灾问题服务如何实现统一配置
  以上的问题,我们都将在SpringCloud中得到答案。
  接下来将在我的讲解的微服务的5大组件中得到解决。
  关于微服务的相关文章,我会一直更新下去。欢迎朋友转发和收藏。

重回巅峰,摩托罗拉6000mAh新机上线,6nm芯片助力最近手机市场上的新机很多,除了小米、荣耀之外,摩托罗拉也在发布新机,也就是摩托罗拉edgespro。讲真,因为在手机方面还是有着很悠久的历史,所以摩托罗拉这个品牌并不差,……华为鸿蒙电视即将正式开售,智慧生活好伙伴开启全新视听体验8月12日即将正式开售的华为智慧屏V75Super最近可谓火遍全网。此次华为的V系列智慧屏新品表现令众多消费者格外关注。据了解,华为智慧屏V75Super首次应用零OD技术,相……30003999元手机性价比排行榜vivoX60上榜近日,根据多家科技媒体的消息,国内手机评测机构安兔兔根据后台数据,统计出了2021年6月份Android手机性价比排行榜。按照安兔兔的介绍,本次上榜的机型除了2021年上半年发……过度收集个人信息?中消协20款APP存在不同程度问题中国消费者协会今天(14日)发布《50款APP账号注销及自动化推荐退订测评报告》显示,在是否可以顺利注销APP账号方面,50款APP中有20款APP存在不同程度问题,占总排查比……人人都要懂得网站爬虫知识,你知道多少呢?什么是爬虫呢?网络爬虫是一种按照一定的规则,自动地抓取互联网信息的程序或者脚本。〔2〕可以理解为一个自动访问网页并进行相关操作的小机器人。本质上就是实现高效、自动地进行网……阿里发力技术领域做到了全球第一,但营收被京东反超了,值得吗?双方口径差别很大,京东虚胖。京东是按过账口径,阿里巴巴是按服务收费总额。按照过账算营收,过去几年最大的企业是苏宁,联想,华为。一万元空调京东口径的营收是一万,阿里的……STO和ICO的区别STO是SecurityTokenOffer的缩写,该金融工具被称为证券化通证发行,其目标是在一个合法合规的监管框架下,进行通证的公开发行。它基于两个需求:更强有力的监管……捐款一元被扣三元?爱心收费要明明白白原标题:捐款一元被扣三元?爱心收费要明明白白莫名其妙就被扣了3块钱,很不爽!近期不少网友反馈称,多家互联网大病筹款平台向捐款者收取支持费,甚至捐款1元也被收取3元;此外,……你还记得自己的第一部手机吗?价格是?买的目的是?我用的好像是诺基亚1100,是不是这个型号不太记得了,蓝色直板机。价格好像是几百块,具体也忘记了,还是跟同学借钱买的,因为正在找工作需要一个联系方式。几百块对贫穷的学生来说差不……每日一道算法题字符串输入三个字符串,按由小到大的顺序输出输入3行字符串输出按照从小到大输出成3行样例输入复制cdeafgabc样例输出复制abcafgcde……华为重拳出击,官微首次辟谣沸腾文案7月5日,有部分媒体报道称,华为将与中国移动公司、中国航天公司合作发射两颗卫星,此次华为发射卫星的举动意在进军6G,并率先抢占6G研发先机。7月6日,华为中国官方账号辟谣……魅族无缘安卓12首发,魅友不需要升级,这些功能Flyme9早最近几年手机的发展十分迅速,手机的竞争也十分激烈,不过手机在硬件配置上同质化也趋于严重,所以各大厂商对手机系统的重视程度也越来越高,在近期华为的鸿蒙OS系统正式开启公测推送了,……
机甲风设计更科幻,多项黑科技加持更智能试驾AIONVPlus今年6月,圈哥在珠海试驾了广汽埃安首款Plus升级车型:AIONSPlus。新车全新的设计和多项配置的升级也给圈哥留下了深刻的印象。时隔3个月,广汽埃安又推出了第二款Plus新……程序员2021。8。160、黑客称盗窃只是为了好玩:退还39亿的加密货币,对钱不感兴趣攻陷PolyNetwork加密货币平台的黑客表示,盗窃只是为了好玩:);该黑客现退还盗取的加密货币。黑客还声……让出行更智能,让旅程更有趣,威马W6配L4级无人驾驶技术因为政策支持和各种优惠,几年前纯电动车在国内发展可谓是如火如荼,就算最近国家对纯电动车的优惠力度不再像原本那样大,但是人们也都开始意识到纯电动车的优势,随着公共充电桩的普及,有……128GB的新手机不建议入手?知道这三个细节,会少走很多弯路几年来科技进步越来越快,特别是手机方面,更新换代非常快,不管是性能还是外观,手机品牌的多样化和多元化让我们有了更多选择!而手机的竞争力也非常大!就比如现在,小编个人建议入手12……不仅显卡,连老黄也成了空气人?英伟达虚假的发布会骗过了所有人不知道大家还记不记得今年4月的GPU技术大会,在大会上,NVIDIA掌门人老黄站在我们熟悉的厨房前,向我们介绍他们的全新技术,一切看起来都是那么自然。尽管老黄在发布会上介……三星新品发布会暗藏玄机S22系列旗舰或有粉色绿色款式昨天晚上,三星举办了一场新品发布会,正式发布了GalaxyZFold3和GalaxyZFilp3两款折叠屏手机,还推出了两款智能手表GalaxyWatch4和GalaxyWat……上线两年用户破两亿,腾讯会议还能做什么?记者崔鹏腾讯会议诞生于2019年12月底,上线不久便遭遇疫情突袭,赶上了在线会议的发展大势。它是腾讯内部用户量破亿最快的产品,两年过去,腾讯会议的用户数更是再悄然间……比特斯拉更豪华,280万FF91被卖光,贾跃亭这次绝对成功了不得不服,价值280万,全球限量300台的FF91三天之内被贾跃亭全部售空。遥相呼应,乐视股价也在近半年疯涨。这一切,似乎都在预示着贾跃亭的梦想即将变成现实,回来不远了。7年的……支付宝的钱要取出来吗?分析2最近阿里频繁出事,很多网友问支付宝里的钱要取出来嘛?小编接着上篇文章继续分析,不了解的去看上篇内容阿里的护城河到底是什么?阿里市值万亿,旗下产业淘宝,天猫,银泰百货,盒马……电动专用车,助力快递业实现跨越式发展伴随着国家对电商产业,尤其是农村电商经济的扶持,我国快递行业呈现出迅猛的发展态势。国家邮政局数据显示,2021年17月,全国快递业务收入同比增长24。7,快递服务企业业务量同比……三十岁阿姨用的是17年花8千入手的苹果X竟然看不上用小米11一位三十多岁的阿姨用的是17年花8000多元入手的iPhoneX竟然看不上用小米11Ultra的小伙子,不知道她是哪里来的勇气?事情是这样的,今天坐地铁下班的路上,听到一……国产芯片传捷报,华为推出新技术,直接绕开ASML光刻机?前不久芯片行业发生了两件大事,第一件事就是,M国又开始对国产芯片新一轮的打击。第二件事就是,国产芯片传来捷报,华为推出新技术,有望绕开ASML光刻机,实现新突破。国产芯片……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网