笔者以前只做过dubbo+zookeeper的小demo,最近接手以SpringCloud为基础的微服务项目,作为刚毕业一年不到的菜鸟感觉迫切需要学习一发。比较两种微服务:
dubbo的服务间通信是通过RPC调用的。个人以前做demo的时候,感觉dubbo容错机制不太好。但国内用dubbo的多。
springcloud的服务间通信是通过http,调用者通过Get,Post,Put,Delete完成对另一个服务的调用,rest风格的访问可以灵活地实现前后端分离,适合于作为各种应用端的后台。Hystrix断路器提供了一套很完善的容错机制。相比dubbo,springcloud迭代周期快,更新活跃。
下面,简单尝试一下。
一.创建一个Eureka注册中心
1.在创建工程之后加入必要依赖
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.4.RELEASE</version> <relativePath/> </parent> <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>Dalston.SR1</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>
2.对Eureka服务注册中心进行一番配置
spring.application.name=eureka_server server.port=10000 eureka.instance.hostname=localhost eureka.client.register-with-eureka=false #是否允许注册自己 eureka.client.fetch-registry=false #是否支持索引 eureka.server.enable-self-preservation=true #是否关闭自我保护 eureka.server.eviction-interval-timer-in-ms=60000 #清理时间间隔-毫秒级
3.使用@EnableEurekaServer注解启动注册中心
@EnableEurekaServer @SpringBootApplication public class EurekaApplication { public static void main(String[] args) { SpringApplication.run(EurekaApplication.class, args); } }
4.启动SpringBoot主类,输入 http://localhost:10000/ 查看注册中心服务
目前,没有客户端向Eureka注册服务.
二.向Eureka注册中心完成一个服务的注册
1.同样在创建工程之后,pom.xml文件加入依赖
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.4.RELEASE</version> <relativePath/> </parent> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Dalston.SR1</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>
2.在application.properties对客户端进行配置
spring.application.name=eureka_client server.port=10001 eureka.client.serviceUrl.defaultZone=http://localhost:10000/eureka/ #注册中心地址 eureka.client.healthcheck.enabled=true #是否开启心跳检查
3.使用@EnableDiscoveryClient向Eureka注册中心注册服务
@EnableDiscoveryClient @SpringBootApplication public class Eurekaclient { public static void main(String[] args) { new SpringApplicationBuilder( Eurekaclient.class) .web(true).run(args); } }
4. 启动主类,输入http://localhost:10000/,可以看到服务注册成功
至此,就可以用Ribbon或Feign调用该服务了,有空再补充。。