赣州网站建设中心,潍坊住房与城市建设部网站,网络营销策划推广方案,设计公司名字创意2019独角兽企业重金招聘Python工程师标准 Spring Cloud是很多组件的集合#xff0c;Spring将常用的技术框架进行包装和整合#xff0c;如mybatis zookeeper rabbitmq redis等等#xff0c;还有一些科技公司贡献出来的一些经过生产环境验证的组件如奈飞公司贡献… 2019独角兽企业重金招聘Python工程师标准 Spring Cloud是很多组件的集合Spring将常用的技术框架进行包装和整合如mybatis zookeeper rabbitmq redis等等还有一些科技公司贡献出来的一些经过生产环境验证的组件如奈飞公司贡献出的eureke服务发现 Hystrix监控与隔离 Feign声明式服务调用 Ribbon负载均衡 Zuul网关 等等详情移步官网 SpringCloud Spring Cloud是目前比较流行的微服务开发框架可以与容器技术如docker一起使用提高生产力。但是组件过多也有一定的学习曲线而且适合大公司的架构不见得适合我们的业务要根据实际情况灵活运用。 Spring Cloud Config是基于git/svn仓库来管理配置然后有一个ConfigServer来负责拉取配置ConfigClient是使用配置的应用比如现在有很多微服务应用如订单管理用户管理地址管理库存管理等等在这些微服务的pom中增加ConfigClient就可以自动从ConfigServer拉取配置。我们还希望配置更新之后可以实时获取这时候需要用到spring cloud中的bus组件bus其实就是基于amqp的一个消息总线spring对rabbitmq和kafka支持的比较好。常见的场景是 1、更改配置 2、push到远程仓库 3、push动作触发一个web hook 4、这个web hook会使用post访问ConfigServer的一个接口 5、ConfigServer通过rabbitmq发送一个广播 6、client收到消息自动拉取并刷新配置 这些不需要任何编码工作只需要配置就可以。下面是一个简单的例子。 1、rabbitmq安装参照官网十分简单也可以参考俺的博客 2、启动一个Config Server pom.xml ?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdspring_cloud/groupIdartifactIdconfig_demo/artifactIdversion1.0-SNAPSHOT/versionpropertiesproject.build.sourceEncodingUTF-8/project.build.sourceEncoding/propertiesparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.0.5.RELEASE/version/parentdependencyManagementdependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-config/artifactIdversion2.0.1.RELEASE/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementdependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-config-server/artifactId/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-bus-amqp/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-actuator/artifactId/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-bus/artifactIdversion2.0.0.RELEASE/version/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-stream-rabbit/artifactIdversion2.0.1.RELEASE/version/dependency/dependenciesrepositoriesrepositoryidspring-snapshots/idnameSpring Snapshots/nameurlhttps://repo.spring.io/libs-snapshot/urlsnapshotsenabledtrue/enabled/snapshots/repository/repositories
/project 入口类 EnableConfigServerSpringBootApplicationpublic class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}} 配置application.properties server.port8888
#配置仓库地址
spring.cloud.config.server.git.urihttps://github.com/mychemicalromance/spring_cloud_config
## 配置文件夹
spring.cloud.config.server.git.searchPathsconfigs
## 分支
spring.cloud.config.labelmaster
## 以下是bus相关配置 替换成自己的就行比如host port name password
spring.cloud.bus.trace.enabledtrue
spring.rabbitmq.host192.168.137.5
spring.rabbitmq.port5672
spring.rabbitmq.usernameguest
spring.rabbitmq.passwordrabbit
management.endpoints.web.exposure.include* 解释Spring Cloud只需要上述入口类就启动了一个web工程使用的是嵌入的tomcat/jetty。默认读取application.[properties|yml|json] 使用喜欢的格式就行。 3、Config Client pom.xml ?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdspring_cloud/groupIdartifactIdconfig_client/artifactIdversion1.0-SNAPSHOT/versionpropertiesproject.build.sourceEncodingUTF-8/project.build.sourceEncoding/propertiesparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.0.5.RELEASE/version/parentdependencyManagementdependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-config/artifactIdversion2.0.1.RELEASE/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementdependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-config/artifactId/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-bus-amqp/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-actuator/artifactId/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-bus/artifactIdversion2.0.0.RELEASE/version/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-stream-rabbit/artifactIdversion2.0.1.RELEASE/version/dependency/dependenciesrepositoriesrepositoryidspring-snapshots/idnameSpring Snapshots/nameurlhttps://repo.spring.io/libs-snapshot/urlsnapshotsenabledtrue/enabled/snapshots/repository/repositories
/project 入口类 Configuration
EnableAutoConfiguration
RestController
RefreshScope
public class Application {Value(${a})String name;RequestMapping(/)public String home() {return Hello name;}public static void main(String[] args) {SpringApplication.run(Application.class, args);}} 配置application.properties server.port8002
## bus相关配置替换成自己的就行比如host port name password
spring.cloud.bus.trace.enabledtrue
spring.rabbitmq.host192.168.137.5
spring.rabbitmq.port5672
spring.rabbitmq.usernameguest
spring.rabbitmq.passwordrabbit
## 读取app1的配置
spring.application.nameapp1
## profile是dev可以有测试test沙箱mirror线上online等等
spring.cloud.config.profiledev
management.endpoints.web.exposure.include* 3、启动Config Server和Config Client首先访问localhost:8888/app1/dev可以看到所有配置然后访问localhost:8002/可以看到获取了配置。然后本地更改配置文件并push。由于在github上配置web hook来调用本地是不现实的所以我们用curl来模拟post访问Config Server如果是在公司的git上并且在公司局域网内可以访问Config Server可以配置web hook来测试。 curl -X POST http://localhost:8888/actuator/bus-refresh 然后刷新Config Client就能看到最新的配置了。 转载于:https://my.oschina.net/wuxiaofei/blog/2088395