其实在这些个Starter之上,是一个团队的努力结果,从下图可以看出,每个Starter都是基于相应类似Netflix团队的Starter-Netflix-XX,开发,团队会根据需要,在Starter-Netflix-XXX中封装SDK,最后整合使用在Starter中,需要注意的是,当我们想当然的想使用某些依赖的时候,你确定,是否添加已重复的依赖,或者你根本就没使用更方便集成的Starter-XXX依赖,只是基于某些Starter-Netflix-XXX依赖,开发…
注意,Starter-Netflix-XXX,只是Netflix团队基于SpringCloud开发的微服务的架构,也是目前使用份额最大的一部分,包括这24个Starter,开箱即用的Starter,大部分也是Netflix团队的成果,还有包括Spring家族,淘宝团队等等…
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-eurekaartifactId>
<version>1.3.2.RELEASEversion>
dependency>
微服务中常用到的用于管理微服务间的调度和监控用的
源码中冰山一角,是Netflix团队集成多种优秀的实现以及多种结构的数据封装而成的
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-eureka-serverartifactId>
<version>1.3.2.RELEASEversion>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-turbineartifactId>
<version>1.4.7.RELEASEversion>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-hystrixartifactId>
<version>1.3.1.RELEASEversion>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-ribbonartifactId>
<version>1.4.7.RELEASEversion>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-zuulartifactId>
<version>1.3.0.RELEASEversion>
dependency>
简单配置如下
zuul:
prefix: /api
routes:
hello-server:
path: /server/**
url: http://localhost:8071
hello-client:
path: /client/**
serviceId: HELLO-CLIENT
这样可以通过访问当前服务的 ip:port/api/server/xxx,即可访问hello-server的xxx服务
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-sleuthartifactId>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-alibabaartifactId>
<version>0.9.0.RELEASEversion>
dependency>
淘宝团队,这是一个Pom工程
<parent>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-alibabaartifactId>
<version>0.9.0.RELEASEversion>
<relativePath>../pom.xmlrelativePath>
parent>
<artifactId>spring-cloud-starter-alibabaartifactId>
<packaging>pompackaging>
<name>Spring Cloud Alibaba Startersname>
<description>Spring Cloud Alibaba Startersdescription>
<modules>
<module>spring-cloud-starter-alibaba-nacos-configmodule>
<module>spring-cloud-starter-alibaba-nacos-config-servermodule>
<module>spring-cloud-starter-alibaba-nacos-discoverymodule>
<module>spring-cloud-starter-alibaba-sentinelmodule>
<module>spring-cloud-starter-alibaba-seatamodule>
<module>spring-cloud-starter-stream-rocketmqmodule>
<module>spring-cloud-starter-bus-rocketmqmodule>
<module>spring-cloud-starter-dubbomodule>
modules>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-archaiusartifactId>
<version>1.3.6.RELEASEversion>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-configartifactId>
<version>RELEASEversion>
dependency>
这里有代码示例,基于GITHUB作为分布式配置的管理
Github仓库如下
两个Maven工程(Client + Server) + Github的仓库
工程代码示例链接在这里
上面的代码示例没有实现热加载
关于,实现热部署,需要用到 MQ + Spring Cloud Bus,有时间我再整理出代码实现
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-bus-amqpartifactId>
<version>2.1.0.RELEASEversion>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-consulartifactId>
<version>2.0.1.RELEASEversion>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-consul-configartifactId>
<version>2.0.1.RELEASEversion>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-consul-discoveryartifactId>
<version>2.0.1.RELEASEversion>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-contract-stub-runnerartifactId>
<version>2.1.0.RELEASEversion>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-contract-verifierartifactId>
<version>2.1.0.RELEASEversion>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-feignartifactId>
<version>1.4.7.RELEASEversion>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-gatewayartifactId>
<version>2.1.3.RELEASEversion>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-oauth2artifactId>
<version>1.2.0.RELEASEversion>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-openfeignartifactId>
<version>2.1.3.RELEASEversion>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-stream-kafkaartifactId>
<version>2.0.1.RELEASEversion>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-stream-rabbitartifactId>
<version>2.1.0.RELEASEversion>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-stream-rocketmqartifactId>
<version>0.9.0.RELEASEversion>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-zipkinartifactId>
<version>2.1.0.RELEASEversion>
dependency>
SpringCloud中还有很多,类似的开箱即用的Starter,谷歌,亚马逊,微软等等都有相应的微服务封装使用,只是基于资源和网络有限,不太方便整理…