前言:笔者曾经有18年的硬件研发经验,从(1)51单片机到(2)FPGA到(3)嵌入式ARM(ARM9到CORTEX A9)全都研发设计过,产品从(1)B超的整机研发到(2)智能家居系统到(3)无线电监测机到(4)平板电脑研发到(5)路灯智能控制到(5)工业电脑均有涉及,从(1)普通的电子技术工程师到(2)副总工程师到(3)副总经理到(4)事业部总经理。。。目前已经步入不惑之年的我对于物联网技术的热衷,决定从硬件开始全面转到物联技术框架之一的spring cloud技术,把我的整个学习经历和大家一起分享,也期待在之后有更多机会和大家一起合作,探讨。
今天是:2018年4月9日 研究主题:改造一个高可用注册中心
一、我们将以前写好的“cjb1-euerka”改造一个高可用的注册中心,这个改造的目的在于:增强系统的可用性,而不能用单节点的服务注册中心的方式。这个改造内容虽然简单,但也消耗了我半天时间,有部分老是不对,peer2和peer1只能注册起一个,研究了很久发现pom.xml中的内容不对,更改如下:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example.demo</groupId> <artifactId>cjb1-eureka</artifactId> <version>1.0.0</version> <packaging>jar</packaging> <name>cjb1-eureka</name> <description>Spring Cloud In Action</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.7.RELEASE</version> <relativePath/> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Brixton.SR5</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
二、新建两个配置文件,分别为:application-peer1.properties和application-peer2.properties
内容如下:
1、application-peer1.properties,目的在于:作为peer1服务中心配置,并将serviceUril指向peer2;
spring.application.name=eureka-server server.port=1111 eureka.instance.hostname=peer1 eureka.client.serviceUrl.defaultZone=http://peer2:1112/eureka/
2、application-peer2.properties,目的在于:作为peer2服务中心配置,并将serviceUril指向peer1;
spring.application.name=eureka-server server.port=1112 eureka.instance.hostname=peer2 eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/
三、需要在C:\Windows\System32\drivers\etc\hosts文件中增加如下内容,才能在本地正确访问到:
四、一切准备就绪,就欠JAR包了,很多书里面都没有讲清楚这步,我来告诉你:
1、点击右边的“Maven Projects”选项里面的“package”
这样可以在项目里面生成项目的jar包,为:cjb1-eureka-1.0.0.jar,并将其复制到C盘下面,如下图:
2、进入WINDOWS的命令框,这个就不用说了吧:
分别运行:java -jar cjb1-eureka-1.0.0.jar”--spring.profiles.active=peer1和java -jar cjb1-eureka-1.0.0.jar”--spring.profiles.active=peer2
3、接下来就是见证奇迹的时候了,如下图分别在网址中输入:http://localhost:1111/和http://localhost:1112/如下图:
五、以上已经完成高可用的注册中心,接着我们将改造一个服务,使其可以在两个注册中心均可以注册以之前做好的“cjb1”为例
1、将里面的“application.properties”的url地址改成如下:
spring.application.name=cjb1-service eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/,http://peer2:1112/eureka/ server.port=8081
2、运行程序,并在两个网址http://localhost:1111/和http://localhost:1112/都可以看到服务均能在上面注册:
六、如果需要完整代码的朋友,可以加入作者QQ群:智物联的spring cloud,入群说明:spring cloud代码需求