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

		
			de.codecentric
			spring-boot-admin-server
			1.5.1
		
		
		
			de.codecentric
			spring-boot-admin-server-ui
			1.5.1
		
		
			org.jolokia
			jolokia-core
			1.3.6
		
		
		
			org.springframework.boot
			spring-boot-starter-mail
			1.5.3.RELEASE
		
		
		
			org.springframework.cloud
			spring-cloud-starter-zookeeper-discovery
			1.1.0.RELEASE
		
		
		
			org.springframework.cloud
			spring-cloud-consul-core
			1.2.0.RELEASE
		
然后再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
	#监控版本号
	[email protected]@

在新建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文件加入:

		
			org.springframework.boot
			spring-boot-starter-parent
			1.5.4.RELEASE
		
		
			org.springframework.boot
			spring-boot-starter-data-jpa
		
		
			org.springframework.boot
			spring-boot-starter-activemq
		
		
			org.springframework.boot
			spring-boot-starter-aop
		
		
			org.springframework.boot
			spring-boot-starter-cache
		
		
			org.springframework.cloud
			spring-cloud-starter-config
		
		
			org.springframework.cloud
			spring-cloud-config-server
		
		
			org.springframework.cloud
			spring-cloud-starter-oauth2
		
		
			org.springframework.cloud
			spring-cloud-starter-security
		
		
			org.springframework.cloud
			spring-cloud-starter
		
		
			org.springframework.cloud
			spring-cloud-starter-zookeeper-config
		
		
			org.springframework.cloud
			spring-cloud-starter-task
		
		
			org.springframework.boot
			spring-boot-starter-data-redis
			
				
					redis.clients
					jedis
				
			
		
		
			io.pivotal.spring.cloud
			spring-cloud-services-starter-config-client
		
		
			io.pivotal.spring.cloud
			spring-cloud-services-starter-service-registry
		
		
			org.springframework.boot
			spring-boot-starter-web
		
		
			org.springframework.boot
			spring-boot-starter-websocket
		

		
			org.springframework.boot
			spring-boot-devtools
			runtime
		
		
			mysql
			mysql-connector-java
		
		
			org.springframework.boot
			spring-boot-starter-tomcat
			provided
		
		
			org.springframework.boot
			spring-boot-starter-test
			test
		
		
			org.springframework.cloud
			spring-cloud-starter-contract-stub-runner
			test
		
		
		
			de.codecentric
			spring-boot-admin-starter-client
			1.5.1
		
		
			org.jolokia
			jolokia-core
			1.3.6
		
		
		
			org.springframework.boot
			spring-boot-starter-actuator
			1.5.3.RELEASE
		

接着新建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
#客户端版本号,在监控中心显示
[email protected]@
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

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

你可能感兴趣的:(分布式集群,应用服务器技术)