随着近几年微服务架构理念的流行,越来越多微服务架构也进入人们的视野,目前大部分公司用的比较多的是阿里的rcp框架Dubbo,Spring-Cloud等。下面本人简单的给分享一下关于Spring-Cloud 的基本技术心得:

Spring-Clou可以说成对现有Spring-boot 封装和抽象 一下是关于Spring-Could Api文档地址

中文文档:https://springcloud.cc/

官方文档:http://projects.spring.io/spring-cloud/#quick-start

那么Spring Boot和和Spring Cloud 功能区别是什么呢?

1.Spring Boot 它内嵌Web服务器(tomcat/jetty)的可执行程序的框架。你开发的web应用不需要作为war包部署到web服务器中[例如:把war包扔到tomcat app下],Spring Boot 直接作为一个可启动程序,直接把Web启动起来加载起来。

2.Spring Cloud是一套微服务开发和治理框架,来自Netflex的OSS,包含了微服务运行的功能,可以通过Spring-boot 项目集成很多功能比如 RabbitMQ,ES,Ribbon,负载均衡,限流等。

Spring Cloud 基本项目搭建步骤 
Spring Cloud 服务注册发现实现原理 如图 

springcloud项目中有一个微服务 java文件带红色J springcloud web_框架搭建

A、B、C、三个服务将项目注册到注册中心去,注册中心会不定时的检测每个项目的是否正常运行或者被注册。

第一步:我们先创建注册中心 
首先先创建一个Spring-Boot 应用【本项目采用esclpilse+maven开发】 
先创建一个Maven-Project root父类便于版本控制【当然也可以直接创建】 

 

创建注册中心项目springcloud-eureka 并且通过maven指定父类目录 
创建一个maven-module 
 
编写spring-demo-register 文件添加依赖包文件POM.xml

<!-- 添加注册中心依赖的包文件  -->
     <dependencies>
         <dependency>
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-starter-eureka-server</artifactId>
         </dependency>
     </dependencies>
 添加注册中心启动类以及配置Spring-Boot 配置application.yml文件 RegisterMain.java
@SpringBootApplication
 @EnableEurekaServer
 public class RegisterMain {
     
     public static void main(String[] args) {
         new SpringApplicationBuilder(RegisterMain.class).web(true).run(args);
     }}
application.yml
server:
   port: 8888eureka:
   instance:
     hostname: localhost
   client:
     register-with-eureka: false
     fetch-registry: false
     service-url: 
       defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

访问 localhost:8888

如果出现这个页面的话 就表示注册中心已经完成了

 

第二步 创建服务注册到注册中心 
创建一个maven module 项目 springcloud-common
配置项目 pom文件

<!-- 添加注册中心依赖的包文件  -->
     <dependencies>
         <dependency>
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-starter-eureka-server</artifactId>
         </dependency>
     </dependencies>

添加注册启动类以及配置Spring-Boot 配置.application.yml文件 
 

AppMain.java
@SpringBootApplication
 @EnableEurekaServer
 public class AppMain {
     
     public static void main(String[] args) {
         new SpringApplicationBuilder(AppMain.class).web(true).run(args);
     }
 } application.yml
 server:
   port: 8001
  
 spring:
   application:
     name: spring-cloud-common
  
 #注册中心指向start    
 eureka:
   instance:
     instance-id: spring-cloud-common
     appname: ${spring.application.name}
   client: 
     service-url: 
       defaultZone: http://127.0.0.1:8888/eureka/


#注册中心指向end

PS:需要注意的defaultZone 我是在本地测试因此需要启动先启动之前的注册中心保证注册中心是可用的。

启动run-as->AppMain.java

再次访问:注册中心的访问地址 localhost:8888

大家会发现 有一个服务被注册到改改注册中心上。但是这会有一个问就是所有的其他人的服务也可以注册到我们这里 这样怎么如何解决这问题呢?就在注册中心配置一个密码就可以实现此功能。

注册中心密码配置
首先需要引用 Spring-Could的官方包。

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-security</artifactId>
 </dependency>
 application.yml 文件配置server:
   port: 8888
  
 security: 
     basic: 
         enable: true
     user: 
         name: admin
         password: 1qaz2wsx   
 eureka:
   instance:
     hostname: localhost
   client:
     register-with-eureka: false
     fetch-registry: false
     service-url: 
       defaultZone: http://${security.user.name}:${security.user.password}@${eureka.instance.hostname}:${server.port}/eureka/
 启动就好了

其他服务如果需要注册的时候需要怎么办呢? 其实很简单加入指向就行

server:
   port: 8001
  
 spring:
   application:
     name: spring-cloud-common
  
 #注册中心指向start    
 eureka:
   instance:
     instance-id: spring-cloud-common
     appname: ${spring.application.name}
   client: 
     service-url: 
       defaultZone: http://admin:1qaz2wsx@127.0.0.1:8888/eureka/
 #注册中心指向end


--------------------------------------完结-------------------------------------------