SpringCloud详解(转)

SpringCloud概述

谈到SpringCloud之前,先看看微服务带来的问题,接口地址如何管理、容错机制、负载均衡、网关、路由策略、高并发情况下,怎么接口限流、断路(服务宕机如何处理)。

微服务解决框架-SpringCloud、Dubbo

SpringBoot和SpringCloud的关系

  •     SpringBoot简化xml配置,快速整合框架
  •     SpringCloud是一整套微服务解决方案--RPC远程调用

            关系SpringBoot的SpringMVC暴露接口,而SpringCloud管理接口,存在依赖关系。

SpringCloud解决问题

    配置管理(注册中心Eureka,Dubbo的是Zookeeper)、服务发现、服务注册、断路器(非常重要,容错机制、限流、调用接口失败如何解决)、路由策略(接口分发那台机器上去)、负载均衡、全局锁、分布式会话、客户端调用、接口网关、服务管理系统。

服务注册和发现(Eureka)

什么是Eureka

 

官方的介绍在这里Eureka wiki。Eureka是Netflix开源的一个RESTful服务,主要用于服务的注册发现。Eureka由两个组件组成:Eureka服务器和Eureka客户端。Eureka服务器用作服务注册服务器。Eureka客户端是一个java客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支持。Netflix在其生产环境中使用的是另外的客户端,它提供基于流量、资源利用率以及出错状态的加权负载均衡。
Eureka的吸引力来源于以下几点:

 

  • 开源:大家可以对实现一探究竟,甚至修改源码。
  • 可靠:经过Netflix多年的生产环境考验,使用应该比较靠谱省心
  • 功能齐全:不但提供了完整的注册发现服务,还有Ribbon等可以配合使用的服务。
  • 基于Java:对于Java程序员来说,使用起来,心里比较有底。
  • spring cloud可以使用Spring Cloud, 与Eureka进行了很好的集成,使用起来非常方便。

搭建注册中心、服务提供者、服务消费者

实现服务注册

1.创建Eurekaserver项目

2.Maven依赖

 
  1.       <parent>

  2. <groupId>org.springframework.boot</groupId>

  3. <artifactId>spring-boot-starter-parent</artifactId>

  4. <version>1.5.2.RELEASE</version>

  5. <relativePath /> <!-- lookup parent from repository -->

  6. </parent>

  7. <properties>

  8. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

  9. <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

  10. <java.version>1.8</java.version>

  11. </properties>

  12.  
  13. <dependencies>

  14. <!--eureka server -->

  15. <dependency>

  16. <groupId>org.springframework.cloud</groupId>

  17. <artifactId>spring-cloud-starter-eureka-server</artifactId>

  18. </dependency>

  19. <!-- spring boot test -->

  20. <dependency>

  21. <groupId>org.springframework.boot</groupId>

  22. <artifactId>spring-boot-starter-test</artifactId>

  23. <scope>test</scope>

  24. </dependency>

  25. </dependencies>

  26. <dependencyManagement>

  27. <dependencies>

  28. <dependency>

  29. <groupId>org.springframework.cloud</groupId>

  30. <artifactId>spring-cloud-dependencies</artifactId>

  31. <version>Dalston.RC1</version>

  32. <type>pom</type>

  33. <scope>import</scope>

  34. </dependency>

  35. </dependencies>

  36. </dependencyManagement>

  37. <build>

  38. <plugins>

  39. <plugin>

  40. <groupId>org.springframework.boot</groupId>

  41. <artifactId>spring-boot-maven-plugin</artifactId>

  42. </plugin>

  43. </plugins>

  44. </build>

  45. <repositories>

  46. <repository>

  47. <id>spring-milestones</id>

  48. <name>Spring Milestones</name>

  49. <url>https://repo.spring.io/milestone</url>

  50. <snapshots>

  51. <enabled>false</enabled>

  52. </snapshots>

  53. </repository>

  54. </repositories>

3.配置application.yml

 
  1. server:

  2. port: 8888

  3. eureka:

  4. instance:

  5. hostname: localhost

  6. client:

  7. registerWithEureka: false

  8. fetchRegistry: false

  9. serviceUrl:

  10. defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

4.启动EurekaServer

 
  1. @SpringBootApplication

  2. @EnableEurekaServer

  3. public class App {

  4. public static void main(String[] args) {

  5. SpringApplication.run(App.class, args);

  6. }

  7. }

5.打开EurekaServer界面

可以看到没有服务注册,我们现在新建一个服务类注册服务上去

服务提供者

创建一个服务提供者 会员服务工程,提供会员查询服务信息。

1.创建项目service-member

2.Maven依赖

 
  1. <parent>

  2. <groupId>org.springframework.boot</groupId>

  3. <artifactId>spring-boot-starter-parent</artifactId>

  4. <version>1.5.2.RELEASE</version>

  5. <relativePath /> <!-- lookup parent from repository -->

  6. </parent>

  7. <properties>

  8. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

  9. <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

  10. <java.version>1.8</java.version>

  11. </properties>

  12. <dependencies>

  13. <dependency>

  14. <groupId>org.springframework.cloud</groupId>

  15. <artifactId>spring-cloud-starter-eureka</artifactId>

  16. </dependency>

  17. <dependency>

  18. <groupId>org.springframework.boot</groupId>

  19. <artifactId>spring-boot-starter-web</artifactId>

  20. </dependency>

  21. <dependency>

  22. <groupId>org.springframework.boot</groupId>

  23. <artifactId>spring-boot-starter-test</artifactId>

  24. <scope>test</scope>

  25. </dependency>

  26. </dependencies>

  27. <dependencyManagement>

  28. <dependencies>

  29. <dependency>

  30. <groupId>org.springframework.cloud</groupId>

  31. <artifactId>spring-cloud-dependencies</artifactId>

  32. <version>Dalston.RC1</version>

  33. <type>pom</type>

  34. <scope>import</scope>

  35. </dependency>

  36. </dependencies>

  37. </dependencyManagement>

  38. <build>

  39. <plugins>

  40. <plugin>

  41. <groupId>org.springframework.boot</groupId>

  42. <artifactId>spring-boot-maven-plugin</artifactId>

  43. </plugin>

  44. </plugins>

  45. </build>

  46. <repositories>

  47. <repository>

  48. <id>spring-milestones</id>

  49. <name>Spring Milestones</name>

  50. <url>https://repo.spring.io/milestone</url>

  51. <snapshots>

  52. <enabled>false</enabled>

  53. </snapshots>

  54. </repository>

  55. </repositories>

3.application.yml配置

 
  1. eureka:

  2. client:

  3. serviceUrl:

  4. defaultZone: http://localhost:8888/eureka/

  5. server:

  6. port: 8762

  7. spring:

  8. application:

  9. name: service-member

4.服务接口

 
  1. @RestController

  2. public class MemberController {

  3.  
  4. @RequestMapping("/getUserList")

  5. public List<String> getUserList() {

  6. List<String> listUser = new ArrayList<String>();

  7. listUser.add("zhangsan");

  8. listUser.add("lisi");

  9. listUser.add("yushengjun");

  10. return listUser;

  11. }

  12. }

5.发布服务

通过注解@EnableEurekaClient表明自己是一个eurekaClient

 
  1. @SpringBootApplication

  2. @EnableEurekaClient

  3. public class AppMember {

  4. public static void main(String[] args) {

  5. SpringApplication.run(AppMember.class, args);

  6. }

  7. }

6.演示效果

服务名称已经注册到Eureka上了

服务消费者

1.创建项目service-order

2.Maven依赖

 
  1. <parent>

  2. <groupId>org.springframework.boot</groupId>

  3. <artifactId>spring-boot-starter-parent</artifactId>

  4. <version>1.5.2.RELEASE</version>

  5. <relativePath /> <!-- lookup parent from repository -->

  6. </parent>

  7.  
  8. <properties>

  9. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

  10. <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

  11. <java.version>1.8</java.version>

  12. </properties>

  13.  
  14. <dependencies>

  15. <dependency>

  16. <groupId>org.springframework.cloud</groupId>

  17. <artifactId>spring-cloud-starter-eureka</artifactId>

  18. </dependency>

  19. <dependency>

  20. <groupId>org.springframework.cloud</groupId>

  21. <artifactId>spring-cloud-starter-ribbon</artifactId>

  22. </dependency>

  23. <dependency>

  24. <groupId>org.springframework.boot</groupId>

  25. <artifactId>spring-boot-starter-web</artifactId>

  26. </dependency>

  27.  
  28. <dependency>

  29. <groupId>org.springframework.boot</groupId>

  30. <artifactId>spring-boot-starter-test</artifactId>

  31. <scope>test</scope>

  32. </dependency>

  33. </dependencies>

  34.  
  35. <dependencyManagement>

  36. <dependencies>

  37. <dependency>

  38. <groupId>org.springframework.cloud</groupId>

  39. <artifactId>spring-cloud-dependencies</artifactId>

  40. <version>Dalston.RC1</version>

  41. <type>pom</type>

  42. <scope>import</scope>

  43. </dependency>

  44. </dependencies>

  45. </dependencyManagement>

  46.  
  47. <build>

  48. <plugins>

  49. <plugin>

  50. <groupId>org.springframework.boot</groupId>

  51. <artifactId>spring-boot-maven-plugin</artifactId>

  52. </plugin>

  53. </plugins>

  54. </build>

  55.  
  56. <repositories>

  57. <repository>

  58. <id>spring-milestones</id>

  59. <name>Spring Milestones</name>

  60. <url>https://repo.spring.io/milestone</url>

  61. <snapshots>

  62. <enabled>false</enabled>

  63. </snapshots>

  64. </repository>

  65. </repositories>

3.application.yml配置

 
  1. eureka:

  2. client:

  3. serviceUrl:

  4. defaultZone: http://localhost:8888/eureka/

  5. server:

  6. port: 8764

  7. spring:

  8. application:

  9. name: service-order

4.编写service,调用server-member

 
  1. @SuppressWarnings("unchecked")

  2. @Service

  3. public class MemberService {

  4. @Autowired

  5. RestTemplate restTemplate;

  6.  
  7. public List<String> getOrderByUserList() {

  8. return restTemplate.getForObject("http://service-member/getUserList", List.class);

  9. }

  10. }

5.编写controller,调用service。

 
  1. @RestController

  2. public class MemberController {

  3. @Autowired

  4. MemberService memberService;

  5. @RequestMapping("/getOrderUserAll")

  6. public List<String> getOrderUserList(){

  7. return memberService.getOrderByUserList();

  8. }

  9. }

6.发布

 
  1. @EnableEurekaClient

  2. @SpringBootApplication

  3. public class OderApp {

  4. public static void main(String[] args) {

  5. SpringApplication.run(OderApp.class, args);

  6. }

  7. /**

  8. * 必须加上,不然启动不了

  9. * @return

  10. */

  11. @Bean //加入bean容器中

  12. @LoadBalanced //支持负载均衡

  13. RestTemplate restTemplate() {

  14. return new RestTemplate();

  15. }

  16. }

这时候可以消费服务,并且Eureka注册中心也多了一个service-order服务

SpringCloud调用服务原理

会员服务注册到注册中心里面,订单服务获取真实的访问地址,通过httpclient去访问会员服务获取数据。

SpringCloud实现负载均衡

怎么实现负载均衡nginx、lvs、HAproxy、F5

SpringCloud中负载均衡,使用Rebbion技术

什么是Rebbion

ribbion是一个负载均衡客户端,类似nginx反向代理,可以很好的控制http和tcp的一些行为。Feign默认集成rebbion。

使用Rebbion负载均衡

1.修改会员服务工程代码区分端口项目

 
  1. @Value("${server.port}")

  2. private String serverport;

  3. @RequestMapping("/getUserList")

  4. public ArrayList<String> getUserList() {

  5. ArrayList<String> listUser = new ArrayList<String>();

  6. listUser.add("zhangsan");

  7. listUser.add("lisi");

  8. listUser.add("流浪者");

  9. listUser.add("端口号"+serverport);

  10. return listUser;

  11. }

2.启动两次会员工程项目,并且端口号不一致。

这时候会发现,service-member服务有两个。

3.引入Maven依赖

 
  1. <dependency><!--ribbon用于负载均衡-->

  2. <groupId>org.springframework.cloud</groupId>

  3. <artifactId>spring-cloud-starter-ribbon</artifactId>

  4. </dependency>

4.在启动类下,把restTemplate加入bean容器,并且上上注解LoadBalanced

 
  1. @EnableEurekaClient

  2. @SpringBootApplication

  3. public class OderApp {

  4. public static void main(String[] args) {

  5. SpringApplication.run(OderApp.class, args);

  6. }

  7. /**

  8. * 必须加上,不然启动不了

  9. * @return

  10. */

  11. @Bean //加入bean容器中

  12. @LoadBalanced //支持负载均衡

  13. RestTemplate restTemplate() {

  14. return new RestTemplate();

  15. }

  16. }

5.演示效果

第一次访问9762

第二次访问

什么是接口网关

前面说了,我们通过httpclient、ajax访问服务,但是在访问不同接口会出现跨域和内网问题。这时候就需要接口网关。

 

路由网关(zuul)

zuul的主要作用是路由转发和过滤器,路由功能是微服务的一部分,比如/api/user/转发到user服务。

搭建SpringCloud网关

1.创建service-zuul工程

2.Maven依赖

 
  1. <parent>

  2. <groupId>org.springframework.boot</groupId>

  3. <artifactId>spring-boot-starter-parent</artifactId>

  4. <version>1.5.2.RELEASE</version>

  5. <relativePath /> <!-- lookup parent from repository -->

  6. </parent>

  7.  
  8. <properties>

  9. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

  10. <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

  11. <java.version>1.8</java.version>

  12. </properties>

  13.  
  14. <dependencies>

  15. <dependency>

  16. <groupId>org.springframework.cloud</groupId>

  17. <artifactId>spring-cloud-starter-eureka</artifactId>

  18. </dependency>

  19. <dependency>

  20. <groupId>org.springframework.cloud</groupId>

  21. <artifactId>spring-cloud-starter-zuul</artifactId>

  22. </dependency>

  23. <dependency>

  24. <groupId>org.springframework.boot</groupId>

  25. <artifactId>spring-boot-starter-web</artifactId>

  26. </dependency>

  27.  
  28. <dependency>

  29. <groupId>org.springframework.boot</groupId>

  30. <artifactId>spring-boot-starter-test</artifactId>

  31. <scope>test</scope>

  32. </dependency>

  33. </dependencies>

  34.  
  35. <dependencyManagement>

  36. <dependencies>

  37. <dependency>

  38. <groupId>org.springframework.cloud</groupId>

  39. <artifactId>spring-cloud-dependencies</artifactId>

  40. <version>Dalston.RC1</version>

  41. <type>pom</type>

  42. <scope>import</scope>

  43. </dependency>

  44. </dependencies>

  45. </dependencyManagement>

  46.  
  47. <build>

  48. <plugins>

  49. <plugin>

  50. <groupId>org.springframework.boot</groupId>

  51. <artifactId>spring-boot-maven-plugin</artifactId>

  52. </plugin>

  53. </plugins>

  54. </build>

  55.  
  56. <repositories>

  57. <repository>

  58. <id>spring-milestones</id>

  59. <name>Spring Milestones</name>

  60. <url>https://repo.spring.io/milestone</url>

  61. <snapshots>

  62. <enabled>false</enabled>

  63. </snapshots>

  64. </repository>

  65. </repositories>

3.application.yml配置

 
  1. eureka:

  2. client:

  3. serviceUrl:

  4. defaultZone: http://localhost:8888/eureka/

  5. server:

  6. port: 8769

  7. spring:

  8. application:

  9. name: service-zuul

  10. zuul:

  11. routes:

  12. api-a:

  13. path: /api-member/**

  14. service-id: service-member

  15. api-b:

  16. path: /api-order/**

  17. service-id: service-order

4.启动类

 
  1. @EnableZuulProxy

  2. @EnableEurekaClient

  3. @SpringBootApplication

  4. public class AppZuul {

  5. public static void main(String[] args) {

  6. SpringApplication.run(AppZuul.class, args);

  7. }

  8. }

5.演示效果  通过Zuul网关转发到实际会员服务。

服务过滤

 
  1. @Component

  2. public class MyFilter extends ZuulFilter {

  3.  
  4. private static Logger log = LoggerFactory.getLogger(MyFilter.class);

  5.  
  6. @Override

  7. public String filterType() {

  8. return "pre";

  9. }

  10.  
  11. @Override

  12. public int filterOrder() {

  13. return 0;

  14. }

  15.  
  16. public boolean shouldFilter() {

  17. return true;

  18. }

  19.  
  20. public Object run() {

  21. RequestContext ctx = RequestContext.getCurrentContext();

  22. HttpServletRequest request = ctx.getRequest();

  23. log.info(String.format("%s >>> %s", request.getMethod(), request.getRequestURL().toString()));

  24. Object accessToken = request.getParameter("token");

  25. if (accessToken != null) {

  26. return null;

  27. }

  28. log.warn("token is empty");

  29. ctx.setSendZuulResponse(false);

  30. ctx.setResponseStatusCode(401);

  31. try {

  32. ctx.getResponse().getWriter().write("token is empty");

  33. } catch (Exception e) {

  34. }

  35. return null;

  36.  
  37. }

  38. }

分布式配置中心概述(SpringCloud Config)

在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。在Spring Cloud中,有分布式配置中心组件spring cloud config ,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中。在spring cloud config 组件中,分两个角色,一是config server,二是config client。

 

上面的话是否有些懵逼,说说应用场景,比如说数据库配置文件,在开发环境(dev),在测试环境(test),在正式环境中(pro)都是不一样的,如何切换,为不同服务统一管理,这就需要分布式配置中心。

config server:相当于git中的本地仓库,熟悉git的同学知道,git从远程仓库pull资源,在本地修改。

搭建分布式配置中心    service-config项目

1.创建git地址

https://github.com/mingchangkun/SpringCloud.git

2.config-client-dev.properties    --dev环境

3.上传配置文件

 
  1. name=小明

  2. pwd=123456

上传git命令

 
  1. git init

  2. git add README.md

  3. git commit -m "first commit"

  4. git remote add origin https://github.com/mingchangkun/SpringCloud.git

  5. git push -u origin master

4.创建config-server项目    相当于本地仓库

5.Maven依赖

 
  1. <parent>

  2. <groupId>org.springframework.boot</groupId>

  3. <artifactId>spring-boot-starter-parent</artifactId>

  4. <version>1.5.2.RELEASE</version>

  5. <relativePath /> <!-- lookup parent from repository -->

  6. </parent>

  7.  
  8. <properties>

  9. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

  10. <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

  11. <java.version>1.8</java.version>

  12. </properties>

  13.  
  14. <dependencies>

  15. <dependency>

  16. <groupId>org.springframework.cloud</groupId>

  17. <artifactId>spring-cloud-config-server</artifactId>

  18. </dependency>

  19.  
  20. <dependency>

  21. <groupId>org.springframework.boot</groupId>

  22. <artifactId>spring-boot-starter-test</artifactId>

  23. <scope>test</scope>

  24. </dependency>

  25.  
  26. <dependency>

  27. <groupId>org.springframework.cloud</groupId>

  28. <artifactId>spring-cloud-starter-eureka</artifactId>

  29. </dependency>

  30. </dependencies>

  31.  
  32. <dependencyManagement>

  33. <dependencies>

  34. <dependency>

  35. <groupId>org.springframework.cloud</groupId>

  36. <artifactId>spring-cloud-dependencies</artifactId>

  37. <version>Camden.SR6</version>

  38. <type>pom</type>

  39. <scope>import</scope>

  40. </dependency>

  41. </dependencies>

  42. </dependencyManagement>

  43.  
  44.  
  45. <build>

  46. <plugins>

  47. <plugin>

  48. <groupId>org.springframework.boot</groupId>

  49. <artifactId>spring-boot-maven-plugin</artifactId>

  50. </plugin>

  51. </plugins>

  52. </build>

  53.  
  54. <repositories>

  55. <repository>

  56. <id>spring-milestones</id>

  57. <name>Spring Milestones</name>

  58. <url>https://repo.spring.io/milestone</url>

  59. <snapshots>

  60. <enabled>false</enabled>

  61. </snapshots>

  62. </repository>

  63. </repositories>

6.配置applcation.properties配置文件

 
  1. spring.application.name=config-server

  2. server.port=8889

  3. spring.cloud.config.server.git.uri=https://github.com/mingchangkun/SpringCloud.git

  4. spring.cloud.config.server.git.searchPaths=

  5. spring.cloud.config.label=master

  6. spring.cloud.config.server.git.username=

  7. spring.cloud.config.server.git.password=

  8. eureka.client.serviceUrl.defaultZone=http://localhost:8888/eureka/

 

  • spring.cloud.config.server.git.uri:配置git仓库地址
  • spring.cloud.config.server.git.searchPaths:配置仓库路径
  • spring.cloud.config.label:配置仓库的分支
  • spring.cloud.config.server.git.username:访问git仓库的用户名
  • spring.cloud.config.server.git.password:访问git仓库的用户密码

如果Git仓库为公开仓库,可以不填写用户名和密码,如果是私有仓库需要填写,本例子是公开仓库,放心使用。

7.运行

 
  1. @EnableConfigServer    //分布式配置服务

  2. @EnableEurekaClient    //注册到Eureka服务中心

  3. @SpringBootApplication

  4. public class AppConfig {

  5. public static void main(String[] args) {

  6. SpringApplication.run(AppConfig.class, args);

  7. }

  8. }

8.演示  查看http://localhost:8889/foo/dev 查询配置中心    成功搭建config配置中心

并且服务已经注册到Eureka服务中心了

创建config-client项目

1.创建config-client项目

2.Maven依赖

 
  1. <parent>

  2. <groupId>org.springframework.boot</groupId>

  3. <artifactId>spring-boot-starter-parent</artifactId>

  4. <version>1.5.2.RELEASE</version>

  5. <relativePath /> <!-- lookup parent from repository -->

  6. </parent>

  7.  
  8. <properties>

  9. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

  10. <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

  11. <java.version>1.8</java.version>

  12. </properties>

  13.  
  14. <dependencies>

  15. <dependency>

  16. <groupId>org.springframework.cloud</groupId>

  17. <artifactId>spring-cloud-starter-config</artifactId>

  18. </dependency>

  19.  
  20. <dependency>

  21. <groupId>org.springframework.boot</groupId>

  22. <artifactId>spring-boot-starter-web</artifactId>

  23. </dependency>

  24.  
  25. <dependency>

  26. <groupId>org.springframework.boot</groupId>

  27. <artifactId>spring-boot-starter-test</artifactId>

  28. <scope>test</scope>

  29. </dependency>

  30. </dependencies>

  31.  
  32. <dependencyManagement>

  33. <dependencies>

  34. <dependency>

  35. <groupId>org.springframework.cloud</groupId>

  36. <artifactId>spring-cloud-dependencies</artifactId>

  37. <version>Dalston.RC1</version>

  38. <type>pom</type>

  39. <scope>import</scope>

  40. </dependency>

  41. </dependencies>

  42. </dependencyManagement>

  43.  
  44. <build>

  45. <plugins>

  46. <plugin>

  47. <groupId>org.springframework.boot</groupId>

  48. <artifactId>spring-boot-maven-plugin</artifactId>

  49. </plugin>

  50. </plugins>

  51. </build>

  52.  
  53. <repositories>

  54. <repository>

  55. <id>spring-milestones</id>

  56. <name>Spring Milestones</name>

  57. <url>https://repo.spring.io/milestone</url>

  58. <snapshots>

  59. <enabled>false</enabled>

  60. </snapshots>

  61. </repository>

  62. </repositories>

3.bootstrap.properties配置文件

 
  1. spring.application.name=config-client

  2. spring.cloud.config.label=master

  3. spring.cloud.config.profile=

  4. #spring.cloud.config.uri= http://localhost:8888/

  5.  
  6. eureka.client.serviceUrl.defaultZone=http://localhost:8888/eureka/

  7. spring.cloud.config.discovery.enabled=true

  8. spring.cloud.config.discovery.serviceId=config-server

  9. server.port=8881

 

  • spring.cloud.config.discovery.enabled 是从配置中心读取文件。
  • spring.cloud.config.discovery.serviceId 配置中心的servieId,即服务名。

这时发现,在读取配置文件不再写ip地址,而是服务名,这时如果配置服务部署多份,通过负载均衡,从而高可用

4.使用分布式配置文件

 
  1. @RestController

  2. public class UserController {

  3. @Value("${name}")

  4. String name;

  5. @Value("${pwd}")

  6. String pwd;

  7. @RequestMapping("/getUserName")

  8. public String getUsername(){

  9. return "姓名:"+name+",密码"+pwd;

  10. }

  11. }

5.启动

 
  1. @SpringBootApplication

  2. @EnableEurekaClient

  3. public class AppClient {

  4. public static void main(String[] args) {

  5. SpringApplication.run(AppClient.class, args);

  6. }

  7. }

5.访问服务

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值