您的位置:首页 > 编程语言 > Java开发

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加入

<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


至此已经配置完成,服务监控和服务注册都已经完成了,主需要先将监控项目启动,在将提供者项目启动就完成了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐