升级微服务架构2:服务注册

当前位置:首页和记H88官方客户端 >

和记H88官方客户端

升级微服务架构2:服务注册

时间:2019-06-13本站浏览次数:300

       

  微服务架构中,服务是最小的可伸缩的独立部署的单位,同一个服务提供可以有多个实例,这些实例都会注册到服务注册中心(Eureka Server)上进行统一的管理及调用的负载均衡。   因Spring Cloud的是已Java为主要开发语言,本文会先讲Java语言的服务怎么注册到服务中心,然后按照这个逻辑移植到.net版本上。

  1.创建java版服务,并注册到服务中心

  1.1创建一个Eureka Client的Maven项目

  操作模式和上一篇使用Maven创建Eureka Server一样,模块名:userservice(用户服务)

  Eureka Client和web添加依赖:  

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency><dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency>

  创建Spring Boot 启动类并加上注解@SpringBootApplication和@EnableEurekaClient

  

  创建一个User实体,一个UserController类并注解为RestController,写一个返回用列表的方法。  

@RestController@RequestMapping("/user")public class UserController { @RequestMapping("/getall") public List<User> getAll(){ ArrayList<User> list=new ArrayList<>(); User user1=new User(); user1.setAge(10); user1.setName("小明"); user1.setDeleted(false); User user2=new User(); user2.setAge(12); user2.setName("小红"); user2.setDeleted(true); list.add(user1); list.add(user2); return list; }

  1.2配置服务中心

  服务配置信息:

server: port: 7771 #服务端口eureka: client: registerWithEureka: true #是否注册 fetchRegistry: true #启用客户端缓存 serviceUrl: defaultZone: http://peer1:8881/eureka/,http://peer2:8882/eureka/ #注册到两个服务中心spring: application: name: userservice #服务名

  启动该服务,刷新下服务中心,可以看到userservice已经注册成功

  

  访问userservice获取用户的方法,成功返回Json数据

  

  1.3启动多个userservice服务实例并注册

  IEDA修改启动配置,去掉启动仅单个实例 ,Edit Configurations->选择要修改的配置->去掉勾选Single Instance only

  

  

  修改userservice的端口为7772启动一个实例,启动成功后再修改端口为7773启动,这样就有三个实例注册到了服务中心

  

  Java版的服务注册就完成了,安装这个思路使用.net core来创建个同样的服务并注册到服务中心

  2.创建.net core服务,并注册到服务中心

  2.1创建.net core API项目 

   创建一个空解决方案MicroService,然后创建一个.net core web api项目UserService

  

  选择.net core 2.1,项目类型选择API,暂时不用HTTPS,去掉勾选

  

  在NuGet包管理器中搜索Pivotal.Discovery.Client,选择.net core版Pivotal.Discovery.ClientCore,这个组件相当于Java中的Eureka Client组件,用于服务注册,现在最新稳定版为2.0.1,非Core版本也可以,不过最近一次更新是2017年9月份了,这里选择Core版。

  

  2.2配置服务中心

  服务注册配置可参考steeltoe官方文档,和java版的Eureka Client配置大致类似  

  配置文件:   

{ "Logging": { "LogLevel": { "Default": "Warning" } }, "AllowedHosts": "*",/*服务注册配置*/ "spring": { "application": { "name": "userservice"/*服务名*/ } }, "eureka": { "client": { "serviceUrl": "http://localhost:8881/eureka/", /*Eureka服务地址*/ "shouldRegisterWithEureka": true,/*是否注册到Eureka Server*/ "shouldFetchRegistry": true /*开启本地缓存*/ }, "instance": { "port": 7779 /*服务端口*/ } }}

  经实践发现Eureka配置文件中的serviceUrl只能用一个地址,多个服务中心地址不知道为什么注册不上,而且只能用localhost或IP,如127.0.0.1,使用peer1,peer2也注册不上,什么原因暂时还没去研究。

  在Program类中指定不同环境配置文件

  参考:http://steeltoe.io/docs/steeltoe-discovery/#reading-configuration-values  如不指定配置文件会导致报错:ArgumentException: Discovery client type UNKNOWN, check configuration,原因就是找不到配置文件,配置服务发现时可加Configuration.GetSection("eureka").GetChildren().Any()来判断能否取到eureka节点的配置文件。

  

  在Startup启动类ConfigureServices方法中添加服务发现客户端配置,在Configure方法中添加使用服务发现客户端的方法

  这个类似于Spring Boot的启动类中设置Eureka Client注解一样

  

  创建一个User实体,属性和Java端一样,注意java的Getter和Setter对应的字段是小写开头,且默认is开头的序列化会去掉前面的is。

  

  同样创建一个UserController和一个getAll方法,返回用户列表。

  2.3服务启动配置并注册到服务中心

  在项目属性->调试中选择IIS Express调试,并将端口设置为服务端口7779

   

  或者直接在launchSettings.json改端口

  

  启动VS调试该服务,浏览器调用该API,http://localhost:7779/user/getall

  成功返回Json信息

  

  再刷新下Eureka Server,发现服务以及注册成功。

   

  到此.net core的微服务也已成功完成注册。




公司地址:浙江省乐清市柳市镇长春工业区
联系人:骆扬 13978261979
颜祺 18888844507
电话:15337687931 传真:333fsb@163.com
邮箱:nxryev4c@sina.com

粤公网安备 44030702001579号

和记H88最新入口@