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

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 上文中讲到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

目录
相关文章
|
5天前
|
Java API 微服务
【Spring Boot系列】通过OpenAPI规范构建微服务服务接口
【4月更文挑战第5天】通过OpenAPI接口构建Spring Boot服务RestAPI接口
|
1月前
|
SpringCloudAlibaba Java 持续交付
【构建一套Spring Cloud项目的大概步骤】&【Springcloud Alibaba微服务分布式架构学习资料】
【构建一套Spring Cloud项目的大概步骤】&【Springcloud Alibaba微服务分布式架构学习资料】
144 0
|
1月前
|
SpringCloudAlibaba Java 网络架构
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
98 0
|
7天前
|
负载均衡 Java 开发者
细解微服务架构实践:如何使用Spring Cloud进行Java微服务治理
【4月更文挑战第17天】Spring Cloud是Java微服务治理的首选框架,整合了Eureka(服务发现)、Ribbon(客户端负载均衡)、Hystrix(熔断器)、Zuul(API网关)和Config Server(配置中心)。通过Eureka实现服务注册与发现,Ribbon提供负载均衡,Hystrix实现熔断保护,Zuul作为API网关,Config Server集中管理配置。理解并运用Spring Cloud进行微服务治理是现代Java开发者的关键技能。
|
12天前
|
监控 Sentinel 微服务
微服务的防御之道:服务雪崩、服务熔断、服务降级
微服务的防御之道:服务雪崩、服务熔断、服务降级
20 1
|
16天前
|
SpringCloudAlibaba 监控 Java
SpringCloud Alibaba微服务-- Sentinel的使用(保姆级)
SpringCloud Alibaba微服务-- Sentinel的使用(保姆级)
|
16天前
|
SpringCloudAlibaba Java API
SpringCloud Alibaba微服务工程搭建(保姆级)
SpringCloud Alibaba微服务工程搭建(保姆级)
|
16天前
|
SpringCloudAlibaba Java Nacos
SpringCloud Alibaba微服务 -- Nacos使用以及注册中心和配置中心的应用(保姆级)
SpringCloud Alibaba微服务 -- Nacos使用以及注册中心和配置中心的应用(保姆级)
|
22天前
|
负载均衡 网络协议 Java
构建高效可扩展的微服务架构:利用Spring Cloud实现服务发现与负载均衡
本文将探讨如何利用Spring Cloud技术实现微服务架构中的服务发现与负载均衡,通过注册中心来管理服务的注册与发现,并通过负载均衡策略实现请求的分发,从而构建高效可扩展的微服务系统。
|
26天前
|
Java fastjson 数据安全/隐私保护
【Dubbo3技术专题】「云原生微服务开发实战」 一同探索和分析研究RPC服务的底层原理和实现
【Dubbo3技术专题】「云原生微服务开发实战」 一同探索和分析研究RPC服务的底层原理和实现
39 0