SpringBoot+Springcloud+SpringBootAdmin 服务发现注册与服务监控完美整合

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

至此已经配置完成,服务监控和服务注册都已经完成了,主需要先将监控项目启动,在将提供者项目启动就完成了。

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菠萝-琪琪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值