| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> SpringCloud (十二) --------- 服务安全机制 与 Apollo 配置中心 -> 正文阅读 |
|
[Java知识库]SpringCloud (十二) --------- 服务安全机制 与 Apollo 配置中心 |
目录一、Spring Cloud 服务安全机制微服务的 Rest 服务都是 http 的,有可能暴露在公网上,那么任何人都可能调用,如果你的 Rest 服务有一些私密信息,这样会导致信息的泄露,所以我们的微服务需要增加一些安全机制。 如果想进行安全方面的处理,首先要在服务上进行如下处理。 A、配置依赖
B、application.properties文件
C、测试访问 地址栏输入: http://localhost:9100/service/goods 此时就需要输入账号和密码才能访问接口。 注意
1. 需要安全认证的服务调用当远程的一个服务已经使用了密码验证,那么这个时候服务的消费方如果想直接访问就不能访问了,此时需要进行相关的处理。 A、如果是 restTemplate 调用 首先配置一个 HttpHeaders
然后在调用的地方注入该 HttpHeaders
调用的时候要传入这个 http 头信息
B、如果是 feign 的方式调用 需要一个配置类
在 feign 的声明式接口注解上加入配置
这样便可以实现调用\ 2. 使用独立的安全服务在实际项目开发中,服务一般都会非常多,绝大多数情况下,这些服务都需要用到安全验证,而且密码也会一样,如果每个服务都单独配置安全认证,工作量比较大,所以应该单独建立一个安全验证的项目,其他微服务如果需要安全认证就引入该项目的依赖即可。 此时我们需要使用如下的配置类来完成:
二、Apollo 配置中心1. Apollo 运行环境A、环境要求
B、项目下载打包 从Github下载项目自己进行编译打包也可以,不过 apollo 本身提供了一个可以直接使用的 jar 包。https://github.com/nobodyiam/apollo-build-scripts C、创建数据库 Apollo 服务端共需要两个数据库:ApolloPortalDB 和 ApolloConfigDB,把数据库、表的创建和样例数据 sql 文件导入数据库即可。 apolloportaldb.sql
apolloconfigdb.sql
Apollo服务端需要知道如何连接到你创建的数据库,所以需要修改 startup.sh,修改 ApolloPortalDB 和 ApolloConfigDB 两个数据库的连接信息。 注意:配置的用户需要具有对 ApolloPortalDB 和 ApolloConfigDB 数据库的读写权限。
注意:不要修改 demo.sh 的其它部分 D、启动 Apollo 配置中心 执行启动脚本
启动成功后,访问:http://ip:8070 登录账号默认是: apollo/admin。 Config-service 8080端口 2. Apollo 应用开发对于我们的应用开发而言,Apollo 阿波罗分布式配置中心属于客户端-服务端模式,我们的应用程序是客户端,Apollo 阿波罗是服务端。 A、在项目中添加 apollo 的依赖
B、配置文件 我们的应用程序也就是 Apollo 客户端依赖于AppId、pollo Meta Server等环境信息来工作,需要做如下配置:
SpringBoot application.properties Apollo 支持通过 Spring Boot 的 application.properties 或bootstrap.properties 文件配置:
app.properties 在项目的 classpath:/META-INF/app.properties 文件存在,并且其中内容配置:
Apollo 可以在 Spring Boot 的 application.properties 或 bootstrap.properties 中指定
通过 app.properties 配置文件在 classpath:/META-INF/app.properties 指定
在main方法的类上加一个注解
C、本地缓存路径 Apollo客户端会把从服务端获取到的配置在本地文件系统缓存一份,用于在遇到服务不可用,或网络不通的时候,依然能从本地恢复配置,不影响应用正常运行 本地缓存路径默认位于以下路径,所以请确保 /opt/data 或 C:\opt\data\ 目录存在,且应用有读写权限。
3. Apollo 客户端的实现原理
2、客户端还会定时从 Apollo 配置中心服务端拉取应用的最新配置,这是一个fallback 机制,为了防止推送机制失效导致配置不更新。 3、客户端定时拉取会上报本地版本,所以一般情况下,对于定时拉取的操作,服务端都会返回 304 - Not Modified。定时频率默认为每 5 分钟拉取一次,客户端也可以通过在运行时指定 System Property: apollo.refreshInterval 来覆盖,单位为分钟。 4、客户端从 Apollo 配置中心服务端获取到应用的最新配置后,会保存在内存中 5、应用程序可以从Apollo客户端获取最新的配置、订阅配置更新通知。 4. Apollo 配置中心设计
Config Service 提供配置的读取、推送等功能,服务对象是Apollo客户端。 Config Service 和 Admin Service 都是多实例、无状态部署,所以需要将自己注册到 Eureka 中并保持心跳。 在 Eureka 之上我们架了一层 Meta Server 用于封装 Eureka 的服务发现接口。 Portal 通过域名访问 Meta Server 获取 Admin Service 服务列表 (IP+Port),而后直接通过 IP+Port 访问服务,同时在 Portal 侧会做 load balance、错误重试。 为了简化部署,我们实际上会把 Config Service、Eureka 和 Meta Server 三个逻辑角色部署在同一个JVM进程中。 5. Apollo 模块Config Service
Admin Service
Meta Server
Eureka
Portal
Client
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 0:06:53- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |