(一)eclipse快速搭建Spring Cloud 微服务框架

Spring-Cloud项目基本搭建

源码下载:https://download.csdn.net/download/shfei10100/10625302

随着近几年微服务架构理念的流行,越来越多微服务架构也进入人们的视野,目前大部分公司用的比较多的是阿里的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. 1.Spring Boot 它内嵌Web服务器(tomcat/jetty)的可执行程序的框架。你开发的web应用不需要作为war包部署到web服务器中[例如:把war包扔到tomcat app下],Spring Boot 直接作为一个可启动程序,直接把Web启动起来加载起来。

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


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

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

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


编写POM文件添加Spring-Cloud基本应用包

<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.qsf.springcloud</groupId>
  <artifactId>springcloud-root</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>
<!-- 建议用1.4.0以后的版本之前的不能可能导致部分功能不能使用 包冲突 会出现注册问题  -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.1.RELEASE</version>
    </parent>
   <modules>
    <module>spring-register</module><!--注册中心项目-->
   </modules>
  <!-- spring-cloud所有项目依赖包 -->
  <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>
        <finalName>spring-root</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <encoding>utf-8</encoding>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

 

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

<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>
  <parent>
    <groupId>com.qsf.springcloud</groupId>
    <artifactId>springcloud-root</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>springcloud-eureka</artifactId>
   <!-- 添加注册中心依赖的包文件  -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
        </dependency>
    </dependencies>
</project>

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

package com;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication //spring-boot 启动注解
@EnableEurekaServer // spring-cloud 服务注解
public class RegisterMain{
     public static void main(String [] args) {
    	 new SpringApplicationBuilder(RegisterMain.class).web(true).run(args);
     }
}

application.yml

server:
  port: 8888

eureka:
  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 项目 
 
配置spring-demo-A 项目 pom文件

 

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

package com;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication
@EnableEurekaClient //Eureka Client
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

 

  • 18
    点赞
  • 88
    收藏
    觉得还不错? 一键收藏
  • 21
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值