当我们的业务系统越来越庞大复杂的时候,各种配置就会层出不群。一旦配置修改了,那么我们就是必须修改后停服务,然后再上线,如果服务少,我们可以手动来操作,如果是成千上百的服务,如果是手动操作,肯定就不合适宜了,然后SpringCloudConfig就出来了,就是我们通常意义上的配置中心,把应用原本放在本地文件的配置抽取出来放在中心服务器,从而能够提供更好的管理、发布能力。
SpringCloudConfig分服务端和客户端,服务端负责将git(svn或本地文件系统)中存储的配置文件发布成REST接口,客户端可以从服务端REST接口获取配置。但客户端并不能主动感知到配置的变化,从而主动去获取新的配置,这需要每个客户端通过POST方法触发各自的/refresh
。
SpringCloudBus通过一个轻量级消息代理连接分布式系统的节点。这可以用于广播状态更改(如配置更改)或其他管理指令。SpringCloudBus提供了通过POST方法访问的endpoint/bus/refresh
,这个接口通常由git的webhook功能调用,用以通知各个SpringCloudConfig的客户端去服务端更新配置,本节就讲怎么搭建一套自动刷新的spring cloud config
模块结构如下:
二、maven聚合模块microservice-config的pom.xml文件
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.5.RELEASE</version> </parent> <modelVersion>4.0.0</modelVersion> <groupId>com.jacky</groupId> <artifactId>miroservice-config</artifactId> <packaging>pom</packaging> <version>1.0-SNAPSHOT</version> <modules> <module>microservice-config-server</module> <module>microservice-config-eureka</module> <module>microservice-config-client</module> </modules> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <docker.image.prefix>jacky</docker.image.prefix><!--配置镜像仓库的属性--> <docker.repostory>192.168.6.132:5000</docker.repostory><!--配置镜像仓库的对应的地址与端口--> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Camden.SR7</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> <!--添加利用maven插件构建docker镜像的插件依赖--> <pluginManagement> <plugins> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.4.13</version> </plugin> </plugins> </pluginManagement> </build> </project>
三、配置中心模块(microservice-config-eureka)
3.1、pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>miroservice-config</artifactId> <groupId>com.jacky</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>microservice-config-eureka</artifactId> <packaging>jar</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <executions> <!--设置在执行maven 的install时构建镜像--> <execution> <id>build-image</id> <phase>install</phase> <goals> <goal>build</goal> </goals> </execution> </executions> <configuration> <!--安装了docker的主机,并且打开了api remote接口设置--> <dockerHost>http://192.168.6.130:5678</dockerHost> <pushImage>true</pushImage><!--设置上传镜像到私有仓库,需要docker设置指定私有仓库地址--> <!--镜像名称--> <imageName>${docker.repostory}/${docker.image.prefix}/${project.artifactId}:${project.version}</imageName> <!--镜像的基础版本--> <baseImage>java:openjdk-8-jdk-alpine</baseImage> <!--镜像启动参数--> <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> </plugins> </build> </project>
3.2、application.yml
spring: application: name: microservice-config-server security: basic: enabled: true user: name: jacky password: admin server: port: 9511 eureka: client: register-with-eureka: false fetch-registry: false service-url: defaultZone: http://jacky:admin@localhost:9511/eureka
3.3、启动类EurekaApplication.java
package com.jacky.cloud; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; @SpringBootApplication @EnableEurekaServer public class EurekaApplication { public static void main(String[] args) { SpringApplication.run(EurekaApplication.class, args); } }
3.3、启动类EurekaApplication.java
package com.jacky.cloud; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; @SpringBootApplication @EnableEurekaServer public class EurekaApplication { public static void main(String[] args) { SpringApplication.run(EurekaApplication.class, args); } }
四、配置中心服务端(microservice-config-server)
4.1、pom.xml文件
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>miroservice-config</artifactId> <groupId>com.jacky</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>microservice-config-server</artifactId> <packaging>jar</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bus-amqp</artifactId> </dependency> <!--配置认证所需要的包--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <executions> <!--设置在执行maven 的install时构建镜像--> <execution> <id>build-image</id> <phase>install</phase> <goals> <goal>build</goal> </goals> </execution> </executions> <configuration> <!--安装了docker的主机,并且打开了api remote接口设置--> <dockerHost>http://192.168.6.130:5678</dockerHost> <pushImage>true</pushImage><!--设置上传镜像到私有仓库,需要docker设置指定私有仓库地址--> <!--镜像名称--> <imageName>${docker.repostory}/${docker.image.prefix}/${project.artifactId}:${project.version}</imageName> <!--镜像的基础版本--> <baseImage>java:openjdk-8-jdk-alpine</baseImage> <!--镜像启动参数--> <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> </plugins> </build> </project>
4.2、application.yml文件
server: port: 9518 eureka: instance: prefer-ip-address: true # 开启健康检查(需要spring-boot-starter-actuator依赖) lease-expiration-duration-in-seconds: 90 #续约到期时间(单位 S)默认是90S lease-renewal-interval-in-seconds: 30 # 续约更新时间间隔(默认30秒) instance-id: ${spring.application.name}:${spring.cloud.client.ipAddress}:${spring.application.instance_id:${server.port}} client: serviceUrl: defaultZone: http://jacky:admin@localhost:9511/eureka/ #把configservice注册到eureka上,以便于客户端通过eureka上注册的信息找到configservice #实现的基本的 HttpBasic 的认证 security: basic: enabled: true # 开启基于HTTP basic的认证 user: name: jacky123 # 配置登录的账号 password: admin123 # 配置登录的密码 # spring: application: name: microservice-config-service cloud: config: server: git: uri: http://git.oschina.net/jacky-lulu/microservice-config-repo #配置git仓库位置 clone-on-start: true #在启动的时候克隆仓库 search-paths: '{application}' #配置仓库路径下的相对搜索位置,可以配置多个 username: myuser #填写git仓库的用户名 password: mypass #填写git仓库的密码 rabbitmq: host: 192.168.6.130 port: 5672 username: myuser password: mypass
相关推荐
idea:在开发环境中跑项目,也就是我们在编码过程中的用的做多的方式 jar、war:线上、服务器上执行jar、war包的方式 maven插件方式:执行命令: mvn spring-boot:run 3、补充: mvn spring-boot:run报错找不到...
Mall4cloud商城系统 springcloud 电商商城系统 B2C商城 BBC商城 O2O商城 B2B2C商城 多语言商城 小程序商城 PC商城 H5商城 APP商城 Java商城 分销商城 多用户商城 uniapp商城 跨境电商商城 积分商城 会员商城
总而言之,Java B2B2C 商城系统是一个包含众多技术模块的复杂工程,涉及前端与后端开发、数据库设计、安全性、用户体验等多个领域。开发者需要深入了解并熟练掌握这些技术,才能构建出稳定、高效且用户体验优秀的...
ShopNC B2B2C是一款专业级别的多用户商城系统,主要针对电子商务领域的商家与消费者提供全方位的在线交易解决方案。该系统源码的发布意味着开发者和企业可以深入理解其内部架构和逻辑,根据自身需求进行定制化开发,...
lilishop是B2B2C多用户商城系统开发的JAVA。基于当前流行技术组合的前后端分离商城系统:后后端使用SpringBoot、MybatisPlus、SpringSecurity、redis、ES、mysql、mongodb等主流技术,前后端使用…
本项目是一款基于Spring Cloud架构的Mall4j微服务B2B2C电商商城系统设计源码,共包含1644个文件。其中,Java源文件521个,JavaScript文件330个,Vue文件135个,CSS和HTML文件共17个,其他包括TypeScript、图片、SVG...
本设计源码提供了一个基于Java的小象电商B2B2C小程序电商商城开源系统。项目包含153个文件,主要使用JavaScript和微信小程序编程语言。文件类型包括37个JavaScript脚本文件、30个WXSS样式文件、29个JSON配置文件、28...
标题中的“JAVA商城 PHP商城系统 分销商城 多用户商城 SaaS O2O商城 B2B2C S2B2C 小程序直播 商城源码”表明这是一个关于电子商务平台开发的项目,涵盖多种技术栈和模式。让我们逐一解析这些关键词,并深入探讨相关...
【仿京东商城B2B2C多用户商城源码】是一种基于电子商务模型的开源软件解决方案,主要用于构建类似于京东商城的在线购物平台。B2B2C(Business to Business to Consumer)模式是电子商务的一种,其中商家可以与其他...
《小京东二开版B2B2C多用户商城系统:构建全面的电子商务解决方案》 在当前数字化的时代,电子商务已经成为企业拓展市场、提升销售的重要手段。"最新小京东二开版B2B2C多用户商城系统源码"提供了一个强大而灵活的...
《wemalls Java 电商微商城B2B2C多商户商城系统——深入解析与二次开发》 在当今数字化时代,电商平台已经成为商业运作的重要组成部分。本文将深入探讨wemalls Java 电商微商城B2B2C多商户商城系统,这是一款功能...
《基于Java的多用户B2B2C商城系统解析》 在信息技术日新月异的今天,电子商务系统已经成为商业运营的重要组成部分。Java作为一款广泛应用的编程语言,以其强大的跨平台性和稳定性,常被用于构建复杂的Web应用,如...
一个基于Spring Cloud、Nacos、Seata、Mysql、Redis、RocketMQ、canal、ElasticSearch、minio的微服务B2B2C电商商城系统,采用主流的互联网技术架构、全新的UI设计、支持集群部署、服务注册和发现以及拥有完整的订单...
3. **MVC(Model-View-Controller)架构**:这是B2B2C商城源码可能采用的设计模式,它将业务逻辑、数据和用户界面分离,便于管理和维护。 4. **前端技术**:HTML、CSS和JavaScript是构建用户界面的关键,可能还需要...
【Ecmall内核仿小京东B2B2C最新多用户商城系统整站源码】 Ecmall是一款基于PHP开发的开源电子商务平台,它的设计灵感来源于京东B2B2C模式,允许商家入驻并独立运营,同时也为消费者提供一个集中购物的场所。此源码...
shopnc b2b2c 商城安装手册.pdf shopnc b2b2c 商城开发手册.chm shopnc b2b2c 安卓说明(wap).txt ShopNC B2B2C商城是ShopNC于2014年最新推出的【B2B2C】电商平台系统,采用PHP5+MySQL技术为基础,采用OOP(面向...
DSMall商城系统是一套完善的B2B2C(多店铺商城)解决方案。系统使用国内优秀开源框架THinkPHP,H5端采用vue.js,前后端分离,基于PHP+MySQL开发,采用B/S架构,依据6年电商经验打造出的一套开源的B2B2C电子商务系统。
SHOPNC B2B2C多用户商城是一款专为电商企业设计的综合性电商平台系统,它集成了B2B(Business to Business)和B2C(Business to Consumer)两种商业模式,同时也支持C2C(Consumer to Consumer)模式,为商家提供了...
然而,这里提到的是"全新修复Ecshop多用户b2b2c商城源码v5",这表明这是一个针对B2B2C模式进行优化和修复的版本。B2B2C(Business-to-Business-to-Consumer)模式在电商领域中意味着平台不仅支持商家对消费者的销售...