国外高校实验室网站建设成果,wordpress能不能做商城,怎样制定网络推广方案,拓者设计吧官网appSpringCloud就是分布式微服务架构的一站式解决方案#xff0c;是微服务架构落地的多种技术的集合。
目录
微服务远程调用
Eureka注册中心
搭建Eureka Server
注册组件
服务拉取 当各种各样的服务越来越多#xff0c;拆分的也越来越细#xff0c;此时就会出现一个服务集…SpringCloud就是分布式微服务架构的一站式解决方案是微服务架构落地的多种技术的集合。
目录
微服务远程调用
Eureka注册中心
搭建Eureka Server
注册组件
服务拉取 当各种各样的服务越来越多拆分的也越来越细此时就会出现一个服务集群。 但是这么多服务只靠人来管理是不现实的所以引入了注册中心。 但是每个微服务都需要有不同的配置我们就需要一个配置中心来管理每个服务的配置文件。 但是还需要管理用户的id访问之类的事情就需要一个服务网关。 光有了这些还需要存储数据的数据库并且还需要搭配分布式的缓存和搜索。
还需要消息队列来管理服务集群之间的通信。 一直到最后才完成了整个微服务的整体架构。 微服务远程调用
现在我们有两个微服务此处看做是两个springboot项目各自有各自的端口和配置数据库不是公用的通过父子关系把一些配置公有化了。我们需要在一个微服务中把另一个微服务的接口调用到该怎么做
这里是有两个数据库每个微服务只能查询到自己数据库的内容。我们通过Order模块里面的内容是无法查询到User中的信息的。 对于User服务在Mapper中有一个GetMapper方法只需要给它发送请求它就会返回一个信息出来。于是我们就可以在Order中也给它发送一个这个请求来获得数据库的信息。并且这个请求是解耦的并不依赖于某个模块。 注册RestTemplate
一般来说配置类是Controller此处的Application也可以作为配置类。我们就直接把RestTemplate注册到Spring中。 在Order中订单查询功能是没有用户信息的。用户信息在另一个数据库中此处查询不到。但是Order中有用户的ID通过这个ID可以在另一个数据库中查询到我们想要的结果。
通过restTemplate就能直接给另一个接口发送信息接收到信息后再整合进原来的order中。 Eureka注册中心
在上述的例子中远程调用的时候我们的URL是写死的。当更换机器或者新增机器的时候这个URL就需要跟着变更。这样就需要通知所有的相关服务去修改。各个项目的配置文件反复更新各个项目部署非常频繁。
引入Eureka注册中心就可以帮助我们完成这一系列的操作。 EurekaServer作为注册中心Server端向微服务应用程序提供服务注册发现健康检查等能力。EurekaClient服务提供者服务启动时会向EurekaServer注册自己的信息IP端口服务信息等Eureka Server 会存储这些信息。
搭建Eureka Server
新建一个模块并且选择好Maven 在eureka的pom文件中配置好相关的信息。 dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-eureka-server/artifactId/dependency
给该项目编写⼀个启动类并在启动类上添加服务EnableEurekaServer 注解开启eureka注册中心。 配置好相关的配置文件。 启动服务并且可以访问到eureka的网页。红框框就是被注册的组件。 注册组件
针对user-service我们注册这个组件到Eureka有两个步骤
引入pom依赖 修改yml配置文件 注意这里的配置文件修改极其容易出错请严格注意格式
对于order-dervice步骤是一样的。重启服务在Eureka的网页中就可以看到两个组件被注册成功。 服务拉取
刚刚是两个组件的情况如果我们想要开两个服务可以直接在IDEA里面添加。添加完成后就会有两个只有端口不同的服务在一起。 现在我们通过order-service完成服务拉取拉取的内容是user-service中的。 修改OrderService的代码修改访问的url路径用服务名称代替ip和端口 String url http://userservice/user/ order.getUserId(); 在order-service项目的启动类OrderApplication中的RestTemplate添加负载均衡注释
这样子刚刚我们启动的两个UserApplication会在收到请求的时候通过负载均衡动态的控制服务器响应给OrderService。
在地址栏快速的访问127.0.0.1:8080/order/101 和 127.0.0.1:8080/order/102 可以发现这两次请求是在不同的实例上完成的。 搭建 Eureka Server
引入 eureka-server 依赖。添加 EnableEurekaServer 注解。在 application.yml 中配置 Eureka 地址。
服务注册
引入 eureka-client 依赖。在 application.yml 中配置 Eureka 地址。
服务发现
引入 eureka-client 依赖。在 application.yml 中配置 Eureka 地址。给 RestTemplate 添加 LoadBalanced 注解。用服务提供者的服务名称远程调用。
这就是通过Eureka注册中心完成服务注册的流程了。只有同一个服务多个实例才能做负载均衡。那么具体讲到负载均衡我们下一章节再详细说~