从零搭建微服务SpringCloud(四)设计SpringCloud服务提供者

本文涉及的产品
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 上文中讲到SpringCloud注册中心应该如何去创建以及配置。那么我们知道Eureka具体可以做什么之后,就可以开始设计微服务-服务提供者了。

1、介绍服务提供者

1、什么是服务提供者

是指服务的被调用方(即:为其它服务提供服务的服务),服务提供者,作为一个Eureka Client,向Eureka Server做服务注册、续约和下线等操作,注册的主要数据包括服务名、机器ip、端口号、域名等等。

2.有哪些可以作为服务提供者

例如登录、注册、读写数据等等的一些可独立出来的为其他服务可提供服务的服务可以作为提供者来进行设计

3.设计服务提供者的好处

可以防止后续我们设计消费者的时候受到攻击,避免第一层攻击触及到核心业务,这样就可以更好的提高服务的安全性,稳定性

2、设计一个服务提供者

1、在项目上右击-new-创建Moudle

创建过程同第三篇创建Eureka

我将名字自定义为FirstProvider代表这是第一个服务提供者,那么这么定义就代表后续在设计的时候肯定会存在第二、第三服务提供者。另外名称后面的-A是代表这是第一个服务提供者集群中的第一号服务,当然目前我并没有创建集群,所以在后续创建集群的时候这样做能够更清晰且更加直观的展现出来。

image.png

2、确认目录是否正确

image.png

3、检查父pom依赖是否自动出现modules块

image.png

4、进入pom.xml配置依赖

image.png

<dependencies>
    <!-- web项目 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- eureka client 客户端账号密码依赖 -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
</dependencies>

5、在FirstProvider-A(module)-src-main-resources中创建application.yml(固定名称的配置文件)并配置以下配置

image.png

#自定义端口号
server:
  port: 7000
#自定义服务注册名
spring:
  application:
    name: FIRST-PROVIDER
#设定一些注册进eureka的配置
eureka:
  #设定实例
  instance:
    #设定续约响应时间,未设定默认30s
    lease-renewal-interval-in-seconds: 30
    #设定续约到期时间,未设定默认90s
    lease-expiration-duration-in-seconds: 90
  client:
    service-url:
      #将服务注册至eureka来进行管理
      defaultZone: http://root:root@localhost:5010/eureka/

6、创建FirstProvider主启动类(注意:主启动类一定要在com.cloud.provider包的第一级下,如果com.cloud.provider创建任何文件,都要保持此Provider主启动类与它们同级,切勿不可在其他包下级,否则很容易出现启动出错,寻找问题很麻烦)

image.png

package com.cloud.provider;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

//SpringBoot核心注解,开启自动配置
@SpringBootApplication
public class ProviderStart {
    public static void main(String[] args) {
        SpringApplication.run(ProviderStart.class,args);
    }
}

7、建立controller层

image.png

package com.cloud.provider.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

//@ResponseBogy和@Controller的组合注解
@RestController
//↓本人通过在类上配置每个类的独立的url映射
@RequestMapping("/firstProvider")
public class ProviderController {
    //方式一
    @RequestMapping(value = "/firstProviderA_one",method = RequestMethod.GET)
    public String provider_A_one(){
        return "this is first provider !";
    }
    //方式二
    @GetMapping("/firstProviderA_two")
    public String provider_A_two(){
        return "this is first provider !";
    }
}

8、启动

1.启动Eureka

image.png

2.启动Provider

image.png

3.在启动过程中出现

image.png
证明我们没有放行服务去Eureka进行注册

4.回到Eureka(module)-src-main-java-com.eureka.start 创建一个Java文件并配置放行

image.png

package com.eureka.start;

import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@EnableWebSecurity
public class WebSec extends WebSecurityConfigurerAdapter {
    protected void configure(HttpSecurity httpSecurity) throws Exception{
        //如果不配置则所有服务无法访问Eureka的服务
        //允许路径中包含eureka及eureka/**的请求去访问Eureka服务
        httpSecurity.csrf().ignoringAntMatchers("/eureka/**");
        super.configure(httpSecurity);
    }
}
重新启动Eureka和Provider

启动成功
image.png

9、进入浏览器访问两种方式对应的映射url

image.png

image.png

成功!

到目前为止,我们仅仅只是设计了一个服务提供者的雏形,但并没有给他设计响应的功能,那么下期开始我将详细介绍一些服务在提供者模块上是如何进行调用并且使用的。

上一篇:从零搭建微服务SpringCloud(三)创建SpringCloud注册中心-Eureka

目录
相关文章
|
21天前
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
2天前
|
JSON Java API
利用Spring Cloud Gateway Predicate优化微服务路由策略
Spring Cloud Gateway 的路由配置中,`predicates`​(断言)用于定义哪些请求应该匹配特定的路由规则。 断言是Gateway在进行路由时,根据具体的请求信息如请求路径、请求方法、请求参数等进行匹配的规则。当一个请求的信息符合断言设置的条件时,Gateway就会将该请求路由到对应的服务上。
95 69
利用Spring Cloud Gateway Predicate优化微服务路由策略
|
21天前
|
Java 开发者 微服务
从单体到微服务:如何借助 Spring Cloud 实现架构转型
**Spring Cloud** 是一套基于 Spring 框架的**微服务架构解决方案**,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统,尤其是微服务架构。
141 68
从单体到微服务:如何借助 Spring Cloud 实现架构转型
|
18天前
|
Java Nacos Sentinel
Spring Cloud Alibaba:一站式微服务解决方案
Spring Cloud Alibaba(简称SCA) 是一个基于 Spring Cloud 构建的开源微服务框架,专为解决分布式系统中的服务治理、配置管理、服务发现、消息总线等问题而设计。
169 13
Spring Cloud Alibaba:一站式微服务解决方案
|
4天前
|
Java 关系型数据库 Nacos
微服务SpringCloud链路追踪之Micrometer+Zipkin
SpringCloud+Openfeign远程调用,并用Mircrometer+Zipkin进行链路追踪
63 20
|
7天前
|
NoSQL 前端开发 测试技术
👀探秘微服务:从零开启网关 SSO 服务搭建之旅
单点登录(Single Sign-On,简称SSO)是一种认证机制,它允许用户只需一次登录就可以访问多个应用程序或系统。本文结合网关和SaToken快速搭建可用的Session管理服务。
48 8
|
27天前
|
弹性计算 持续交付 API
构建高效后端服务:微服务架构的深度解析与实践
在当今快速发展的软件行业中,构建高效、可扩展且易于维护的后端服务是每个技术团队的追求。本文将深入探讨微服务架构的核心概念、设计原则及其在实际项目中的应用,通过具体案例分析,展示如何利用微服务架构解决传统单体应用面临的挑战,提升系统的灵活性和响应速度。我们将从微服务的拆分策略、通信机制、服务发现、配置管理、以及持续集成/持续部署(CI/CD)等方面进行全面剖析,旨在为读者提供一套实用的微服务实施指南。
|
25天前
|
负载均衡 Java 开发者
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
83 5
|
23天前
|
弹性计算 Kubernetes API
构建高效后端服务:微服务架构的深度剖析与实践####
本文深入探讨了微服务架构的核心理念、设计原则及实现策略,旨在为开发者提供一套系统化的方法论,助力其构建灵活、可扩展且易于维护的后端服务体系。通过案例分析与实战经验分享,揭示了微服务在提升开发效率、优化资源利用及增强系统稳定性方面的关键作用。文章首先概述了微服务架构的基本概念,随后详细阐述了其在后端开发中的应用优势与面临的挑战,最后结合具体实例,展示了如何从零开始规划并实施一个基于微服务的后端项目。 ####
|
1月前
|
监控 持续交付 数据库
构建高效的后端服务:微服务架构的深度解析
在现代软件开发中,微服务架构已成为提升系统可扩展性、灵活性和维护性的关键。本文深入探讨了微服务架构的核心概念、设计原则和最佳实践,通过案例分析展示了如何在实际项目中有效地实施微服务策略,以及面临的挑战和解决方案。文章旨在为开发者提供一套完整的指导框架,帮助他们构建出更加高效、稳定的后端服务。