IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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

apollo 配置中心,官网?Apollo,官网有设计,部署说明。

系统架构图

?

github开源官网https://github.com/apolloconfig/apollo/releases

releases上下载后发现有这4个文件

apollo-adminservice-1.7.1-github ?apollo-configservice-1.7.1-github ?apollo-portal-1.7.1-github ?apollo-quick-start-1.7.1

quick-start是本机搭建测试用,这个不用管他。

实际我们用到的是apollo-adminservice-1.7.1-github ?apollo-configservice-1.7.1-github ?apollo-portal-1.7.1-github

参考上面的架构图

apollo-portal-1.7.1-github就是客户端页面,用来增删改查配置项的

apollo-adminservice-1.7.1-github 这个是portal的服务端,portal远程调用它

apollo-configservice-1.7.1-github 其实是三合一,就是配置中心的服务端config service和微服务注册中心eureka,服务发现meta server。

另外配置中心的客户端,也就是我们需要集成到项目中的,添加依赖即可。

<dependency>

<groupId>com.ctrip.framework.apollo</groupId>

<artifactId>apollo-client</artifactId>

<version>1.8.0</version>

</dependency>?

部署指南

分布式部署指南 · apolloconfig/apollo Wiki · GitHub

mysql下载

MySQL :: Download MySQL Community Server (Archived Versions)

搭建步骤:

我这里使用了apollo 1.7.1这个版本,目前搭建的是单机版,需要集群的话,多搭几台服务器

数据库mysql需要5.6以上,发现使用5.1的执行数据库脚本会报错,因为脚本用了timestamp,删除timestamp,发现站点也启动不了

1.登录Mysql后??mysql -u root -p? 执行数据库脚本

mysql>source /usr/local/apollo/apollo-quick-start-1.7.1/sql/apolloconfigdb.sql

mysql>source /usr/local/apollo/apollo-quick-start-1.7.1/sql/apolloportaldb.sql

2.更改配置启动各个服务和站点

cd到

apollo-configservice-1.7.1-github ?

apollo-adminservice-1.7.1-github

apollo-portal-1.7.1-github这3个目录

先将config里面application-github.properties里面数据库链接改成自己mysql数据库链接

再将scripts文件夹里面授权

chmod 777 startup.sh

chmod 777 shutdown.sh

依次启动各个服务

apollo-configservice-1.7.1-github? ?(配置中心服务端,metaserver及eureka注册中心 端口号 8080,可以到startup.sh里面更改 )

apollo-adminservice-1.7.1-github? (后台管理服务端,也会注册到eureka,端口号8090 )

apollo-portal-1.7.1-github (后台管理客户端页面,增删改查配置,端口号8070)

./startup.sh启动

启动后即可访问后台管理客户端页面站点portal,这里假设是部署在本机127.0.0.1,改成你们自己的服务器ip地址。

http://127.0.0.1:8070

初始密码apollo/admin

注册中心

http://127.0.0.1:8080

portal后台

http://127.0.0.1:8090

3.springboot集成apollo客户端

3.1 pom.xml新增apollo客户端依赖

<dependency>
    <groupId>com.ctrip.framework.apollo</groupId>
    <artifactId>apollo-client</artifactId>
    <version>1.8.0</version>
</dependency>

3.2 application.properties新增

#apollo
#这里直接使用了测试的SampleApp,实际请自行创建项目
app.id=SampleApp
spring.application.name=demo
#配置中心地址
apollo.meta=http://131.252.10.118:8080/
#允许启动
apollo.bootstrap.enabled=true
#名称空间
apollo.bootstrap.namespaces =application

3.3 指定虚拟机参数

如果是在idea或者eclipse调试,那么需要增加虚拟机参数VM options新增,这里是测试环境选了DEV,生产需要另外改,apollo.configService是配置中心地址,如果不指定,部署在外网就有可能使用外网服务器的内网地址访问造成,连接超时的情况。目前是单机测试,如果是集群,那么需要改成负载中心的地址。

-Denv=DEV -Dapollo.configService=http://131.252.10.118:8080

生产部署时写脚步,指定参数这么写:

java? -Denv=DEV? -Dapollo.configService=http://131.252.10.118:8080 -jar xxx.jar

参数名称注意有区别:

apollo.config-service(1.9.0+) 或者?apollo.configService(1.9.0之前)

参考:

Apollo分布式部署指南

3.4 写个controller来测试

package com.figo.demo.controller;


import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


@RestController
public class TestRestController {
    @Value("${jdbc-url}")
    String jdbcUrl;

    @RequestMapping("/testAppolo")
   public String testApollo(HttpServletRequest request, HttpServletResponse response)
   {
       return jdbcUrl;
   }
}

这个jdbc-url就是在apollo配置中心新增的,

修改之后记得点发布,目前测试下来,发布后客户端能实时更新到最新的值,但是发现其实会自动重启demo这个应用的。根据官方文档,配置中心portal调用admin-service修改配置后,没有通过mq通知config-service,按照官方说法是尽量少引入第三方组件,config-service每秒轮询检查是否有配置更新,有更新,再通过长链接发送到客户端client的,客户端会重启应用来更新本地properties,客户端会下载一份备份properties到本地,如果连接不上服务端,会使用本地的配置文件。

?参考:微服务架构~携程Apollo配置中心架构剖析

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-10-31 11:40:47  更:2022-10-31 11:45:22 
 
开发: 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年5日历 -2024/5/19 11:42:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码