蚂蚁课堂每特学院-2期springcloud微服务高级_第1页
蚂蚁课堂每特学院-2期springcloud微服务高级_第2页
蚂蚁课堂每特学院-2期springcloud微服务高级_第3页
蚂蚁课堂每特学院-2期springcloud微服务高级_第4页
蚂蚁课堂每特学院-2期springcloud微服务高级_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SpringCloud微服务基础N讯使用RPC通讯技术。为了解决上面分布式架构的缺点,我们引入了soaSOAServiceOrientedArchitectureRPC调RPCRemoteProcedureCall程序员显式编码这个调用的细节。即无论是调用本地接口/服务的还是的接口/服比如两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数restful些约束条件和原则的应用程序或设计就是RESTful通信协议,只是请求包的格式不同而已,SOAPXMLRPC(客户端)上通过参数传递的方式调用另一台机器(服务器)上RPC在使用形式上像调用本地函数(或方法)一样去调用的函数(或方法)rpc调用框RMI实现,利用java.rmi包实现,基于Java方法协议(JavaRemoteMethodHessianremotingonhttpRMI。基于HTTP协议,采用二进制编。thriftthriftRPCSpringCloud务发现、断路器、路由、微、事件总线、全局锁、决策竞选、分布式会话等等。RPCSpring面向于服务架微服务架(架构设计概念,各服务间分布式也是),自治(分布式依赖整体组合)其它特性(单(monolit]的简化实现策略-平台思想)SOASOAESB(ESB),非常重,需要序列化和反XMLSpringCloudspringcloudSpringbootSpringbootSpringBoot服务的与发现(EurekaSpringCloudNetflixEureka,eureka的介绍在这里Eurekawiki。Eureka是Netflix开源的一个RESTful服务,主要用于服用作服务服务器。Eureka客户端是一个java客户端,用来简化与服务器的交互、作为功能齐全:不但提供了完整的发现服务,还有Ribbon等可以配合使用的服务。JavaJavaspringcloudSpringCloud,EurekaEureKaserver项Maven依<artifactId>spring-boot-starter-<relativePath/><!--lookupparentfromrepository--<project.build.sourceEncoding>UTF-<project.reporting.outputEncoding>UTF-<!--eurekaserver--<artifactId>spring-cloud-starter-eureka-<!--springboottest--<artifactId>spring-boot-starter-<artifactId>spring-cloud-<artifactId>spring-boot-maven-port:8888hostname:localhostregisterWithEureka:falsefetchRegistry:falsedefaultZone:publicclassApp{publicstaticvoidmain(String[]args){SpringApplication.run(App.class,args);}}eurekaserver界面Noapplicationavailable没有服务被发现……^_^ (eurekaMember创建项目service-Maven<artifactId>spring-boot-starter-<relativePath/><!--lookupparentfromrepository--<project.build.sourceEncoding>UTF-<project.reporting.outputEncoding>UTF-<artifactId>spring-cloud-starter-<artifactId>spring-boot-starter-<artifactId>spring-boot-starter-<artifactId>spring-boot-starter-<artifactId>spring-cloud-<artifactId>spring-boot-maven-port:8762publicclassMemberControllerpublicList<String>getUserList()List<String>listUser=newArrayList<String>();returnlistUser;}}通过注解@EnableEurekaClientpublicclassAppMember{publicstaticvoidmain(String[]args){SpringApplication.run(AppMember.class,args);}}需要指明,这个很重要,这在以后的服务与服务之间相用一name。启动工程,打开:8888,即eurekaserver的你会发现一个服务已经在服务中了,服务名为SERVICE-HI,端口为这时打开,你会在浏览器上看到创建项目sercice-Maven<artifactId>spring-boot-starter-<relativePath/><!--lookupparentfromrepository--<project.build.sourceEncoding>UTF-<project.reporting.outputEncoding>UTF-<artifactId>spring-cloud-starter-<artifactId>spring-cloud-starter-<artifactId>spring-boot-starter-<artifactId>spring-boot-starter-<artifactId>spring-cloud-<artifactId>spring-boot-maven- port:8764publicclassMemberService{RestTemplatepublicList<String>getOrderByUserList()return",}}publicpublicclassAppOrder{publicstaticvoidmain(String[]args){SpringApplication.run(AppOrder.class,args);}RestTemplaterestTemplate()returnnew}}在工程的启动类中,通过@EnableDiscoveryClient向服务中心;并且向程序的ioc注入一个bean:restTemplate;并通过@LoadBalanced注解表明这个restRemplate开启负载均衡ribbon启动两个会员服务工程,端分别为,订单服务使用负载均衡策略轮训到会为。Feignribbon。privateString@RequestMappublicList<String>getUserList()List<String>listUser=newArrayList<String>();listUser.add("端:"+serverPort);returnlistUser;}服务消费者Feign是一个式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只FeignFeignservice-order-feignMaven<artifactId>spring-boot-starter-<relativePath/><!--lookupparentfromrepository--<project.build.sourceEncoding>UTF-<project.reporting.outputEncoding>UTF-<artifactId>spring-cloud-starter-<artifactId>spring-cloud-starter-<artifactId>spring-boot-starter-<artifactId>spring-cloud-starter-<artifactId>spring-boot-starter-<artifactId>spring-cloud-<artifactId>spring-boot-maven- port:8765@FeignClient("service-@FeignClient("service-publicinterfaceMemberFeign{ publicList<String>}@FeignClient需要调用服务名称,@RequestMap服务请求名publicclassOrderFeignApppublicstaticvoidmain(String[]args){SpringApplication.run(OrderFeignApp.class,args);}}}路由网关到到user务,/api/shop发到到shop。zuul默认和Ribbon实现了负载均衡nginxSpringCloud网关service-zuulMavenservice-<artifactId>spring-boot-starter-<relativePath/><!--lookupparentfromrepository--<project.build.sourceEncoding>UTF-<project.reporting.outputEncoding>UTF-<artifactId>spring-cloud-starter-<artifactId>spring-cloud-starter-<artifactId>spring-boot-starter-<artifactId>spring-boot-starter-<artifactId>spring-cloud-<artifactId>spring-boot-maven- port:8769name:service-zuulapi-path:/api-member/**service-id:service-memberapi-path:/api-order/**service-id:service-order发送请求转发到开启网关publicclassMyFilterextendsZuulFilterprivatestaticLoggerlog=publicStringfilterType()return}}publicintfilterOrder()return}publicbooleanshouldFilter()return}publicObjectrun()ontextctx=HttpServletRequestrequest=(String.format("%s>>>%s",request.getMethod(),request.getRequestURL().toString()));ObjectaccessToken=request.getParameter("token");if(accessToken!=null)return}log.warn("tokenistry}catch(Exceptione)}return}} 请断路器100%可用,如果单个服务出现问题,调用这个服务就会出现网络延迟,此时若Hystrix的具体措施包括:Hystrix作用RPCservice-orderMaven<artifactId>spring-cloud-starter-RestRestRest请求方式接口改mand(fallbackMethod="orderError")publicList<String>getOrderUserAll(){returnrestTemplate.getForObject("",}publicList<String>orderError()List<String>listUser=newArrayList<String>();listUser.add("notorderUserlist");return}publicclassOrderApppublicstaticvoidmain(String[]args)SpringApplication.run(OrderApp.class,}RestTemplaterestTemplate()returnnew}}mand作用:服务发生错误,回调方法@EnableHystrix启动断路Fegin@FeignClient(value="service-publicinterfaceMemberFeign{ publicList<String>}publicclassMemberFeignServiceimplementsMemberFeignpublicList<String>getOrderByUserList(){List<String>listUser=newArrayList<String>();listUser.add("notorderUserlist");return}}配置文件新enabled:true分布式配置中SpringCloudspringcloudconfigcloudconfigconfigserver,configclient。git使用码云创建git地 ---devconfig-server<artifactId>spring-boot-starter-<relativePath/><!--lookupparentfromrepository--<project.build.sourceEncoding>UTF-<project.reporting.outputEncoding>UTF-<artifactId>spring-cloud-config-<artifactId>spring-boot-starter-<artifactId>spring-cloud-starter-<artifactId>spring-cloud-<artifactId>spring-boot-maven- perties==config-config-serverpublicclassC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论