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

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 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

目录
相关文章
|
29天前
|
Dubbo Java 应用服务中间件
Spring Cloud Dubbo:微服务通信的高效解决方案
【10月更文挑战第15天】随着信息技术的发展,微服务架构成为企业应用开发的主流。Spring Cloud Dubbo结合了Dubbo的高性能RPC和Spring Cloud的生态系统,提供高效、稳定的微服务通信解决方案。它支持多种通信协议,具备服务注册与发现、负载均衡及容错机制,简化了服务调用的复杂性,使开发者能更专注于业务逻辑的实现。
53 2
|
1月前
|
Cloud Native Java API
聊聊从单体到微服务架构服务演化过程
本文介绍了从单体应用到微服务再到云原生架构的演进过程。单体应用虽易于搭建和部署,但难以局部更新;面向服务架构(SOA)通过模块化和服务总线提升了组件复用性和分布式部署能力;微服务则进一步实现了服务的独立开发与部署,提高了灵活性;云原生架构则利用容器化、微服务和自动化工具,实现了应用在动态环境中的弹性扩展与高效管理。这一演进体现了软件架构向着更灵活、更高效的方向发展。
|
1月前
|
存储 数据可视化 Java
基于MicrometerTracing门面和Zipkin实现集成springcloud2023的服务追踪
Sleuth将会停止维护,Sleuth最新版本也只支持springboot2。作为替代可以使用MicrometerTracing在微服务中作为服务追踪的工具。
101 1
|
23天前
|
Kubernetes 负载均衡 Docker
构建高效后端服务:微服务架构的探索与实践
【10月更文挑战第20天】 在数字化时代,后端服务的构建对于任何在线业务的成功至关重要。本文将深入探讨微服务架构的概念、优势以及如何在实际项目中有效实施。我们将从微服务的基本理念出发,逐步解析其在提高系统可维护性、扩展性和敏捷性方面的作用。通过实际案例分析,揭示微服务架构在不同场景下的应用策略和最佳实践。无论你是后端开发新手还是经验丰富的工程师,本文都将为你提供宝贵的见解和实用的指导。
|
8天前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
37 3
|
22天前
|
监控 API 持续交付
构建高效后端服务:微服务架构的深度探索
【10月更文挑战第20天】 在数字化时代,后端服务的构建对于支撑复杂的业务逻辑和海量数据处理至关重要。本文深入探讨了微服务架构的核心理念、实施策略以及面临的挑战,旨在为开发者提供一套构建高效、可扩展后端服务的方法论。通过案例分析,揭示微服务如何帮助企业应对快速变化的业务需求,同时保持系统的稳定性和灵活性。
46 9
|
24天前
|
监控 安全 Java
构建高效后端服务:微服务架构深度解析与最佳实践###
【10月更文挑战第19天】 在数字化转型加速的今天,企业对后端服务的响应速度、可扩展性和灵活性提出了更高要求。本文探讨了微服务架构作为解决方案,通过分析传统单体架构面临的挑战,深入剖析微服务的核心优势、关键组件及设计原则。我们将从实际案例入手,揭示成功实施微服务的策略与常见陷阱,为开发者和企业提供可操作的指导建议。本文目的是帮助读者理解如何利用微服务架构提升后端服务的整体效能,实现业务快速迭代与创新。 ###
58 2
|
29天前
|
消息中间件 Kafka 数据库
微服务架构中,如何确保服务之间的数据一致性?
微服务架构中,如何确保服务之间的数据一致性?
|
1月前
|
Dubbo Java 应用服务中间件
Dubbo学习圣经:从入门到精通 Dubbo3.0 + SpringCloud Alibaba 微服务基础框架
尼恩团队的15大技术圣经,旨在帮助开发者系统化、体系化地掌握核心技术,提升技术实力,从而在面试和工作中脱颖而出。本文介绍了如何使用Dubbo3.0与Spring Cloud Gateway进行整合,解决传统Dubbo架构缺乏HTTP入口的问题,实现高性能的微服务网关。
|
29天前
|
JSON Java 数据格式
【微服务】SpringCloud之Feign远程调用
本文介绍了使用Feign作为HTTP客户端替代RestTemplate进行远程调用的优势及具体使用方法。Feign通过声明式接口简化了HTTP请求的发送,提高了代码的可读性和维护性。文章详细描述了Feign的搭建步骤,包括引入依赖、添加注解、编写FeignClient接口和调用代码,并提供了自定义配置的示例,如修改日志级别等。
76 1