微服务---Spring Cloud

背景

微服是现在的主流技术,我觉得大家有必要对其进行学习,毕竟搞技术的要跟上时代的步伐!好了,也不兜兜转转了,直接进入本次的主题。

什么是微服务架构

微服务架构是将原来庞大的单体项目进行拆分,拆分后的每一个模块独立形成一个新的项目,服务之间可按照一定方式进行通信的架构

常见微服架构

  1. Dubbo/Dubbox(本次不讲)
    Dubbo是阿里巴巴公司开源的一个高性能服务框架,通过RPC调用,RPC即 Remote Procedure Call(远程过程调用),Dubbox是当当网对Dubbox进行升级改 良。
  2. Spring Cloud
    Spring Cloud 是基于Spring Boot 的一整套实现微服务的框架,它提供了微服务开发所需的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等组件。调用方式为RESTful,可以理解为在Wed请求中,将参数封装于URL内部(如使用URL:www.baidu.com/getUserInfo/12,获取用户ID为12的详细用户信息)

Spring Cloud 体系

  1. Eureka:Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移
  2. Feign:Feign是一种声明式、模板化得HTTP客户端,能够简化服务之间的接口请求
  3. Hystrix:Hystrix是一种容错管理工具,能够通过熔断机制控制服务节点,从而对延迟和故障提供更强大的容错能力。
  4. Ribbon:Ribbon提供云端负载均衡,有多种负载均衡策略可供选择,可配合服务发现和断路器使用。
  5. Zuul:Zuul是可以提供动态路由。监控、弹性、安全等边缘服务的框架,相当于是设备和Netflix流应用的所有Web网站后端请求的第一站。
  6. Config:Config是配置管理工具包,可以把配置放到远程服务器上,集中化管理集群配置,目前支持本地存储、Git以及Subversion。
  7. Sleuth:Sleuth能够跟踪一个请求在微服务间的传播过程,详细记录服务的调用链路,并能统计调用的耗时等数据,帮助分析和优化系统性能。

使用Eureka实现注册中心及注册服务

1.Eureka简介
Eureka 包含服务端Eureka Server和客户端Eureka Client两部分。服务端也被称为服务注册中心,用于提供服务和发现。客户端服务启动后会将自身注册至服务器端,客户端会周期性地向注册中心发送心跳包来保持服务连接。
2.编写Eureka Server
(1)新建一个Spring Boot 项目(不会的伙伴可以百度)
(2)在刚刚建的项目的pom.xml文件中添加对SpringCloud的相关依赖
关键代码:

<dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-netflix-eureka-server</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!--这个是为了实现不能随意访问服务导的包(安全机制) alt+insert选择manager...可以快速选择mavenjar包-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
    </dependencies>
	<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    

(3)添加启动注解:在启动类上添加注解@EnableEurekaServer,声明这是一个Eureka Server
(4)添加配置信息:修改默认的配置文件application.properties为application.yml(这个改不改都可以,建议统一,要注意缩进)

server:
  port: 7776
eureka:
  client:
    service-url:
      defalutZone: http://localhost:7776/eureka/            #给那些想找它的人提供地址
      #defalutZone: http://localhost:7777/eureka/,http://localhost:7778/eureka/    配置多个注册中心,通过“,”隔开,也就是7776,7777,7778三个,给那些想找它的人提供地址
    fetch-registry: false                                   #默认是true,服务之间互相抓取(有多个服务的情况下),false为关闭
    register-with-eureka: false                             #默认是true,是否把当前这个项目添加到注册中心里(这个项目本身就是做服务的没有比较再交给自己管理,如果是业务的项目就是设置为true)
security:
  basic:
    enabled: true           #在这个项目里启用安全机制(为了不给谁都可以访问)
  user:
    name: root              #用户名
    password: 123456        #密码

(5)启动运行验证:http://localhost:7776如果成功访问到Eureka Server主页即代表成功(这里有一个坑,这个访问路径只需要到端口就行,上面配的那个http://localhost:7776/eureka/中的Eureka不用)
3.注册微服务到Eureka Server(也就是客户端,即实现业务功能的子项目)
(1)新建一个Spring Boot 项目(不会的伙伴可以百度)
(2)在刚刚建的项目的pom.xml文件中添加对SpringCloud的相关依赖
关键代码:

<dependencies>
        <!--这个feign是去找别人,其他的客户端是等着别人来找就可以了-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-feign</artifactId>
        </dependency>

        <!--这两个可以实现基本启动和注册了-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>
        <!--这两个可以实现基本启动和注册了-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>RELEASE</version>
            <scope>test</scope>
        </dependency>

        <!--实体模块-->
        <dependency>
            <groupId>com.example</groupId>
            <artifactId>dm-common-model</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    

(3)添加启动注解:在启动类上添加注解@EnableDiscoveryClient,声明这是一个Eureka Client
(4)添加配置信息:修改默认的配置文件application.properties为application.yml(这个改不改都可以,建议统一,要注意缩进)

server:
  port: 8081
spring:
  application:
    name: dm-user-consumer            #起个名字,给别人找(注册到Eureka Server中的名称)
eureka:
  client:
    service-url:
      #defaultZone: http://localhost:7776/eureka/            #客户端注册到哪里去(指定Eureka Server的地址)
      defaultZone: http://root:123456@localhost:7776/eureka/ #服务中心加了安全机制后,客户端如果要访问那就必须带上root:用户名,123456密码加上“@”,否则启动报错
feign:
  hystrix:
    enabled: true                     #开启异常管理(hystrix容错)

(5)运行验证注册:依次启动服务端,客户端,访问http://localhost:7776如果成功访问到Eureka Server主页,可以看到Application下已经出现客户端微服务,在Status中显示UP表示该服务正常运行,如果服务出现异常,会显示为DOWN.
4.为Eureka Server添加用户认证(前面Eureka Server是允许匿名用户直接访问的,这样不安全,为其设置登录认证)
(1)添加依赖:在Eureka Server项目的pom.xml添加依赖

<!--这个是为了实现不能随意访问服务导的包(安全机制) alt+insert选择manager...可以快速选择mavenjar包-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
(2)添加配置(在Eureka Server项目中application。yml中添加)
security:
  basic:
    enabled: true           #在这个项目里启用安全机制(为了不给谁都可以访问)
  user:
    name: root              #用户名
    password: 123456        #密码
(3)运行验证,访问Eureka Server,这时就会弹出输入账号密码进行验证,那么微服务(客户端)要注册到Eureka Server上必须指定用户名和密码,否则启动会报异常,无法正常注册
在微服务项目上的application.yml文件在注册中心地址前添加“用户名:密码@”
defaultZone: http://root:123456@localhost:7776/eureka/ #服务中心加了安全机制后,客户端如果要访问那就必须带上root:用户名,123456密码加上“@”,否则启动报错
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要使用Spring Cloud搭建微服务登录,你可以按照以下步骤进行操作: 1. 创建认证服务:首先,你需要创建一个认证服务,用于处理用户的登录和身份验证。你可以使用Spring Security来实现用户认证和授权功能。在认证服务中,你可以定义用户账号、密码以及角色等信息。 2. 配置认证服务:在认证服务中,你需要配置Spring Security来定义登录接口、认证规则和权限控制等。可以使用基于用户名密码的登录方式,也可以使用其他方式,如OAuth2.0等。确保你的认证服务能够正确验证用户的身份,并返回相应的访问令牌。 3. 创建其他微服务:除了认证服务外,你还需要创建其他的微服务,用于提供不同的业务功能。这些微服务可以是独立的应用程序,通过Spring Cloud注册到服务注册中心,并与认证服务进行通信。 4. 集成认证服务:在其他微服务中,你需要集成认证服务,以便验证用户的访问权限。可以通过在请求头中携带访问令牌,并在微服务中进行校验来实现。使用Spring Security OAuth2或者JWT等技术来实现令牌的生成与验证。 5. 配置路由和网关:为了统一管理和保护微服务,你可以使用Spring Cloud Gateway或Zuul等网关技术来配置路由和访问控制规则。通过网关,你可以对外暴露统一的登录接口,并在用户登录成功后将请求转发到相应的微服务。 6. 前端集成:最后,你需要在前端应用中集成登录功能。前端应用可以使用Spring Boot、React、Angular或Vue等框架进行开发。通过调用登录接口获取访问令牌,并在后续的请求中携带令牌进行访问控制。 总结来说,使用Spring Cloud搭建微服务登录需要创建认证服务、配置认证规则和权限控制、集成认证服务到其他微服务、配置路由和网关以及前端集成等步骤。这样可以实现用户的登录和访问权限控制。希望以上信息对你有所帮助!如果有任何问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值