客户端client 提供真正服务的角色的配置, 它提供服务 在 服务注册方server (注册中心)进行注册
与创建服务注册中心相似操作:
一、同样新建module,选择quickstart点击下一步
二、地址、父类地址置空。然后artifactId命名(随意:springcloud-eureka-support)
三、next之后,地址注意一下地址修改
四、创建成功之后,两个模块儿位置如下
五、配置servicesupport的pom,与server的pom配置相同,只需要把第一个pom的1的方框处server改为client
和第一个微服务同理 我们需要配置入口类 pom.xml application.yml,因为是服务提供者,这里还需编写服务类controller
application.xml
server: port: 8701 # 服务提供方 # 指定当前eureka客户端的注册地址, eureka: client: service-url: defaultZone: http://${eureka.instance.hostname}:8700/eureka instance: hostname: localhost #当前服务名称 spring: application: name: eureka-service
pom.xml添加如下
<!--引入springboot-parent父项目-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--引入springcloud的euekea server依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
<!--指定下载源和使用springcloud的版本-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<!--<version>${spring-cloud.version}</version>-->
<version>Hoxton.SR6</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
此处注意一下springboot和springcloud版本问题。
查找cloud官网https://start.spring.io/actuator/info,查看对应版本。
我用的boot版本是2.3.1.RELEASE,对应cloud版本Hoxton.SR6。
六、编写所提供的 服务controller:
package com.yun; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/Hello") public class Controller { @RequestMapping("/World") public String helloWorld(String s){ System.out.println("传入的值为:"+s); return "传入的值为:"+s; }
入口类并运行此微服务:
package com.yun; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; @SpringBootApplication @EnableDiscoveryClient//代表自己是一个服务提供方 public class EurekaServiceApplication { public static void main(String[] args) { SpringApplication.run(EurekaServiceApplication.class,args); } }
然后运行EurekaServiceApplication
此时再进入服务注册的页面 http://localhost:8700/
可以看见服务提供者已被注册进 服务注册者
在直接访问一下服务提供者的 网络位置http://localhost:8701/Hello/World?s=小明
我们已经看见 可以访问了,证明此微服务可用。
但是我们一般不直接调用所需的微服务,而是经过提供注册服务的服务器server,获取所需的服务提供者列表(为一个列表,此列表包含了能提供相应服务的服务器),他们也许是个集群,因此server会返回一个 ip+端口号的表,服务消费者通过相应算法访问这表上的不同服务器,这些服务器提供的是相同的服务,这种在服务消费者一方挑选服务器为自己服务的方式是一种客户端的负载均衡。
相应算法:
轮询、随机、权重负载
轮询就是循环的意思,假如有3台服务器,访问方式就是1,2,3,1,2,3,1,2,3····
随机就是随机,回想一下random方法,一种无规律的方式
权重负载这种算法,意思就是 根据服务器负载能力的分配相应的服务。能力大的干得多。能力小的干得少
下一章:服务的调用方式
版权声明:本文为CSDN博主「Anakki」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_29519041/java/article/details/85238270