SpringBoot+Springcloud+SpringBootAdmin 服务发现注册与服务监控完美整合
2017-06-30 19:38
2046 查看
SpringSource公司开源的SpringCloud与阿里开源的Dubbo一直是SOA架构服务调度框架的首选,前段时间公司尝试使用了Dubbo+Zookeeper架构模式,但是实践过程中发现几个比较重要的缺陷,虽然也有比较好的优势但是此文就不阐述Dubbo的优势了,主要说下为何遗弃的几点原因供大家参考:
1.Dubbo虽然对代码的植入很小,但是在对提供者与消费者分层时,需要使用Maven的依赖开发功能,看似没什么问题,但是当提供者存在很多Git分支时,消费者在调试设置部署上线时需要非常小心,很容易出错。
2.Dubbo+Zookeeper架构的监控工具搜索了一番,发现貌似DubboKeeper这个开源监控从界面上看还算可以,但是真正的监控功能不够强大。
3.现在内部很多项目都采用SpringBoot方式在开发了,但是Dubbo还不支持,虽然也有一些网上存在个人开发的一些附加包可以支持,但是安全性有点疑虑
综上几点原因思考后还是决定采用SpringCloud进行SOA调度框架,而SpringBootAdmin官方提供的监控工具功能很强大,扩展性也很全面,下面就给大家说下整合这些框架的具体流程,整合过程中本人遇到了很多的坑,都是泪...,具体流程按以下步骤:
1.首先下载Zookeeper并且分布式安装配置,此文就不阐述,详细可以见:Ubuntu14 分布式安装Zookeeper
2.官方说明最好不要将SpringBootAdmin监控工具和提供者或者消费者放在一个项目,因为不安全,如果你的项目挂了随之监控也挂了那么还需要监控做什么呢,所以新建一个SpringBoot项目,然后在Pom加入
接着新建application.properties文件,写入:
在新建bootstrap.yml文件,写入:
3.建立服务提供者SpringBoot项目,然后再Pom文件加入:
接着新建application.xml文件,写入:
最后在Main方法入口加上:
至此已经配置完成,服务监控和服务注册都已经完成了,主需要先将监控项目启动,在将提供者项目启动就完成了。
1.Dubbo虽然对代码的植入很小,但是在对提供者与消费者分层时,需要使用Maven的依赖开发功能,看似没什么问题,但是当提供者存在很多Git分支时,消费者在调试设置部署上线时需要非常小心,很容易出错。
2.Dubbo+Zookeeper架构的监控工具搜索了一番,发现貌似DubboKeeper这个开源监控从界面上看还算可以,但是真正的监控功能不够强大。
3.现在内部很多项目都采用SpringBoot方式在开发了,但是Dubbo还不支持,虽然也有一些网上存在个人开发的一些附加包可以支持,但是安全性有点疑虑
综上几点原因思考后还是决定采用SpringCloud进行SOA调度框架,而SpringBootAdmin官方提供的监控工具功能很强大,扩展性也很全面,下面就给大家说下整合这些框架的具体流程,整合过程中本人遇到了很多的坑,都是泪...,具体流程按以下步骤:
1.首先下载Zookeeper并且分布式安装配置,此文就不阐述,详细可以见:Ubuntu14 分布式安装Zookeeper
2.官方说明最好不要将SpringBootAdmin监控工具和提供者或者消费者放在一个项目,因为不安全,如果你的项目挂了随之监控也挂了那么还需要监控做什么呢,所以新建一个SpringBoot项目,然后在Pom加入
<dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-server</artifactId> <version>1.5.1</version> </dependency> <!-- https://mvnrepository.com/artifact/de.codecentric/spring-boot-admin-server-ui --> <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-server-ui</artifactId> <version>1.5.1</version> </dependency> <dependency> <groupId>org.jolokia</groupId> <artifactId>jolokia-core</artifactId> <version>1.3.6</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-mail --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> <version>1.5.3.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-zookeeper-discovery --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId> <version>1.1.0.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-consul-core --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-consul-core</artifactId> <version>1.2.0.RELEASE</version> </dependency>然后再Main方法入口加上:
@Configuration @EnableAutoConfiguration @EnableDiscoveryClient @EnableAdminServer
接着新建application.properties文件,写入:
#监控工具端口 server.port=8181 #监控刷新时间 单位毫秒 spring.boot.admin.monitor.period=10000 #是否开启自动发现服务 spring.boot.admin.discovery.enabled=true spring.cloud.consul.enabled=true #是否需要秘钥认证 management.security.enabled=false #拥有者 info.owner=Mazkc #监控版本号 info.version=@project.version@
在新建bootstrap.yml文件,写入:
spring: application: name: UPBOX-SpringAdmin cloud: config: enabled: false zookeeper: connect-string: xxxx:2181 discovery: enabled: true instance-host: localhost instance-port: ${server.port}
3.建立服务提供者SpringBoot项目,然后再Pom文件加入:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.4.RELEASE</version> </parent> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId 4000 >spring-boot-starter-aop</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-oauth2</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zookeeper-config</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-task</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <exclusions> <exclusion> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>io.pivotal.spring.cloud</groupId> <artifactId>spring-cloud-services-starter-config-client</artifactId> </dependency> <dependency> <groupId>io.pivotal.spring.cloud</groupId> <artifactId>spring-cloud-services-starter-service-registry</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-contract-stub-runner</artifactId> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/de.codecentric/spring-boot-admin-starter-client --> <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-client</artifactId> <version>1.5.1</version> </dependency> <dependency> <groupId>org.jolokia</groupId> <artifactId>jolokia-core</artifactId> <version>1.3.6</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-actuator --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> <version>1.5.3.RELEASE</version> </dependency>
接着新建application.xml文件,写入:
#当前应用程序名字 spring.boot.admin.client.name=Demo #客户端启动后是否自动注册 spring.boot.admin.auto-registration=true spring.boot.admin.client.enabled=true #客户端是否提供本机真实ip spring.boot.admin.client.prefer-ip=true #Spring-Cloud监控中心地址 spring.boot.admin.url=http://localhost:8181 #客户端项目地址 spring.boot.admin.client.service-url=http://localhost:8585 #客户端版本号,在监控中心显示 info.version=@project.version@ info.owner=Mazkc #是否需要安全认证 management.security.enabled=false security.user.name=wmq security.user.password=wmq #如果Admin端设置了用户名密码访问,你也需要在客户端配置它们 spring.boot.admin.username=wmq spring.boot.admin.password=wmq #客户端使用端口 server.port=8585 #线上MYSQL数据库配置 spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://xxxx:3306/xxxx spring.datasource.username=xxx spring.datasource.password=xxx在新建bootstrap.yml文件,写入:
spring: application: name: HelloWorld cloud: zookeeper: connect-string: xxxx:2181 discovery: enabled: true logging: level: org.apache.zookeeper.ClientCnxn: ERROR
最后在Main方法入口加上:
@SpringBootApplication(exclude = {MongoAutoConfiguration.class,MongoDataAutoConfiguration.class, EurekaClientAutoConfiguration.class,EurekaClientConfigServerAutoConfiguration.class, EurekaDiscoveryClientConfigServiceAutoConfiguration.class,EurekaInstanceAutoConfiguration.class}) @EnableDiscoveryClient
至此已经配置完成,服务监控和服务注册都已经完成了,主需要先将监控项目启动,在将提供者项目启动就完成了。
相关文章推荐
- Spring cloud eureka+Client+Spring boot admin 服务注册监控
- Spring Cloud 服务注册发现-路由-负载均衡-全链路日志跟踪-监控
- Spring Boot + Spring Cloud 构建微服务系统(一):服务注册和发现(Consul)
- Spring Cloud Spring Boot mybatis 企业分布式微服务云(一)服务注册与发现(Eureka)【Dalston版】
- Spring Cloud Spring Boot mybatis 企业分布式微服务云(二)服务注册与发现(Consul)
- Spring Boot + Spring Cloud 实现权限管理系统 后端篇(十八):服务注册和发现(Consul)
- Spring Cloud Spring Boot mybatis 企业分布式微服务云(二)服务注册与发现(Consul)
- (二)SpringBoot+SpringCloud —— 使用Eureka实现服务注册与发现
- Spring Cloud Spring Boot mybatis 企业分布式微服务云(一)服务注册与发现(Eureka)【Dalston版】
- springcloud consul +consul 实现服务注册及发现
- SpringBoot +SpringCloud微服务示例,整合FreeMaker,AngularJS
- Spring Cloud微服务 服务注册与发现
- 使用Spring Cloud Consul实现服务的注册和发现
- Spring cloud 实现服务注册及发现
- Spring-cloud & Netflix 源码解析:Eureka 服务注册发现接口 ****
- Spring Boot Admin UI 分布式微服务监控中心
- Spring cloud Eureka服务注册及发现(二)创建注册服务
- Spring cloud Eureka服务注册及发现(三)发现使用服务
- Spring Cloud构建微服务架构(一)服务注册与发现
- 使用Spring Cloud Zookeeper实现服务的注册和发现