分布式配置中心:安全保护

  由于配置中心存储的内容比较敏感,做一定的安全处理是必需的。为配置中心实现安全保护的方式有很多,比如物理网络限制、OAuth2授权等。由于微服务应用和配置中心都构建与Spring Boot基础上,所以与Spring Security结合使用会更加方便。

1. 只需要再配置中心的pom.xml中加入Sprign Security依赖,不需要做任何其他改动就能实现对配置中心访问的安全保护。默认情况下,可以获得一个名为user的用户,并且在配置中心启动的时候,在控制台打印出该用户的随机密码:

2. 大多数情况下,并不会使用随机生成密码的机制。可以在配置文件中指定用户和密码:

3. 此时,如果连接到配置中心的客户端中没有设置对应的安全信息,在获取配置信息时会返回401错误。所以,需要通过配置的方式在客户端加入安全信息来通过校验:

分布式配置中心:高可用配置

  当要将配置中心部署到生产环境中时,与服务注册中心一样,也应该是一个高可用的应用。Spring Cloud Config实现服务端的高可用非常简单,主要有以下两种方式:

  ◆ 传统模式:不需要为这些服务端做任何额外的配置,只需要遵守一个配置规则,将所有的Config Server都指向同一个Git仓库,这样所有的配置内容就通过统一的共享文件系统来维护。而客户端在指定Config Server位置时,只需要配置Config Server上层的负载均衡设备地址即可。

  ◆ 服务模式:将Config Server作为一个普通的微服务应用,纳入Eureka的服务治理体系中。这样微服务应用就可以通过配置中心的服务名来获取配置信息,这种方比起传统的实现模式来说更加有利于维护,因为对于服务端的负载均衡配置和客户端的配置中心指定都通过服务治理机制一并解决了,既实现了高可用,也实现了自维护。

  接下来介绍如何将Config Server注册到服务中心,并通过服务发现来访问Config Server并获取Git仓库中的配置信息。基于demo-config-server和demo-config-client两个工程来进行改造。

1. 在demo-config-server的pom.xml中增加Eureka依赖:

2. 在demo-config-server的application.yml文件中指定服务注册中心位置:

3. 在demo-config-server的启动类中启用eureka客户端:

4. 启动该服务,登录注册中心查看:

5. 在demo-config-client的pom.xml中增加Eureka依赖:

6. 在demo-config-client的bootstrap.properties文件中指定服务注册中心的位置:

  其中通过eureka.client.serviceUrl.defatulZone参数指定服务注册中心,用于服务的注册与发现;再将spring.cloud.discovery.enabled参数设置为true,开通通过服务来访问Config Server的功能;最后利用spring.cloud.config.discovery.serviceId参数来指定Config Server注册的服务名。

7. 在demo-config-client的启动类中启用Eureka客户端:

8. 启动该服务,登录注册中心查看:

9. 访问客户端应用提供的服务http://localhost:8002/from,此时,会返回Git仓库中application-dev.properties文件中配置的from属性内容:“git-dev-1.0”

Spring Cloud学习笔记-011的更多相关文章

  1. Spring Cloud学习笔记--Spring Boot初次搭建

    1. Spring Boot简介 初次接触Spring的时候,我感觉这是一个很难接触的框架,因为其庞杂的配置文件,我最不喜欢的就是xml文件,这种文件的可读性很不好.所以很久以来我的Spring学习都 ...

  2. Spring Cloud学习笔记【十】配置中心(消息驱动刷新配置)

    上一篇中讲到,如果需要客户端获取到最新的配置信息需要执行refresh,我们可以利用 Webhook 的机制每次提交代码发送请求来刷新客户端,当客户端越来越多的时候,需要每个客户端都执行一遍,这种方案 ...

  3. Spring Cloud 学习笔记 (一)-- Eureka 服务器

    开局一张图,截取了本人学习资料中的一张图,很好地展示了Eureka的架构. Eureka服务器 管理服务的作用.细分为服务注册,服务发现. 所有的客户端在Eureka服务器上注册服务,再从Eureka ...

  4. Spring Cloud 学习笔记(二)——Netflix

    4 Spring Cloud Netflix Spring Cloud 通过自动配置和绑定到Spring环境和其他Spring编程模型惯例,为Spring Boot应用程序提供Netflix OSS集 ...

  5. Spring Cloud 学习笔记(一)——入门、特征、配置

    [TOC] 0 放在前面 0.1 参考文档 http://cloud.spring.io/spring-cloud-static/Brixton.SR7/ https://springcloud.cc ...

  6. Spring Cloud学习笔记-006

    服务容错保护:Spring Cloud Hystrix 在微服务架构中,我们将系统拆分成了很多服务单元,各单元的应用间通过服务注册与订阅的方式互相依赖.由于每个单元都在不同的进程中运行,依赖通过远程调 ...

  7. Spring Cloud学习笔记-005

    服务消费者 之前已经搭建好了微服务中的核心组件——服务注册中心(包括单节点模式和高可用模式).也有了服务提供者,接下来搭建一个服务消费者,它主要完成两个目标,发现服务以及消费服务.其中,服务发现的任务 ...

  8. Spring Cloud学习笔记-002

    搭建Spring Cloud注册中心:Eureka 服务注册:在服务治理框架中,通常都会构建一个注册中心,每个服务单元向注册中心登记自己提供的服务,将主机与端口号.版本号.通信协议等一些附加信息告诉注 ...

  9. Spring Cloud学习笔记-007

    声明式服务调用:Spring Cloud Feign Feign基于Netflix Feign实现,整合了Spring Cloud Ribbon和Spring Cloud Hystrix,除了提供这两 ...

随机推荐

  1. powershell_基础篇

    powershell 想必大家对windows操作系统下的cmd命令提示符可能并不陌生,大多数人都应该使用过它.而对于今天我们要学习的PowerShell跟cmd有什么关系呢?可以简单地说,Power ...

  2. Unity-NGUI UILabel换行

    表里填写的是"\n",代码读出来会变成"\\n", 那就需要代码中将 "\\n" 重新变成 "\n" 才能够换行. st ...

  3. 如何在浏览器中输入(myeclipse创建的项目的)地址访问JSP页面

    如何在浏览器中输入(myeclipse创建的项目的)地址访问JSP页面 可以在Tomcat项目里面查看你的JSP页面在哪里,具体的路径为: tomcat--work--localhost--项目名称, ...

  4. 问题解决:Spyder不支持OpenCV模块代码提示

    在使用中遇到的问题是,Spyder的代码完成功能不支持某些编译模块(.pyd后缀),如OpenCV的Python模块cv/cv2,在编写脚本文件时,在已存在import cv&import c ...

  5. service注入失败

    每一个service都需要一个注解

  6. Hash及HashMap简介

    Hash简介: Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值.这种转换是一种压缩映射 ...

  7. Android OpenGL ES 开发(六): OpenGL ES 添加运动效果

    在屏幕上绘制图形只是OpenGL的相当基础的特点,你也可以用其他的Android图形框架类来实现这些,包括Canvas和Drawable对象.OpenGL ES为在三维空间中移动和变换提供了额外的功能 ...

  8. FFmpeg 结构体学习(七): AVIOContext 分析

    在上文FFmpeg 结构体学习(六): AVCodecContext 分析我们学习了AVCodec结构体的相关内容.本文,我们将讲述一下AVIOContext. AVIOContext是FFMPEG管 ...

  9. [Swift]LeetCode222. 完全二叉树的节点个数 | Count Complete Tree Nodes

    Given a complete binary tree, count the number of nodes. Note: Definition of a complete binary tree ...

  10. [Swift]LeetCode968.监控二叉树 | Binary Tree Cameras

    Given a binary tree, we install cameras on the nodes of the tree. Each camera at a node can monitor  ...