第一章:SpringCloud服务发现和服务注册

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 服务提供者1. 解决硬编码问题修改一个服务ip后关联到好几个服务的配置修改2. 服务发现组件服务注册表服务注册健康检查 默认30s3.

服务提供者

1. 解决硬编码问题

  1. 修改一个服务ip后关联到好几个服务的配置修改

2. 服务发现组件

  1. 服务注册表
  2. 服务注册
  3. 健康检查 默认30s

3. 服务发现方式

  1. 客户端 eureka 【zk】
  2. 服务端 consul+nginx

4. 代码片

pom.xml
<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

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

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
AI 代码解读
配置文件application.yml
server:
  port: 7900
spring:
  jpa:
    generate-ddl: false
    show-sql: true
    hibernate:
      ddl-auto: none
  datasource:
    url: jdbc:mysql://127.0.0.1/springcloud??characterEncoding=UTF8&useSSL=true&allowMultiQueries=true
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver
    schema: classpath:schema.sql   #建表
    data: classpath:data.sql #数据
logging:
  level: info
AI 代码解读
创建数据库
  1. schema.sql
DROP table user if exists;
CREATE TABLE user(
    id bigint,
    username varchar(40),
    name varchar(20),
    age int(3),
    balance decimal(10,2),
    PRIMARY KEY(id)
);
AI 代码解读
  1. data.sql
insert into user(id,username,name,age,balance) VALUES(1,'user1','老焦1',200,100.00);
insert into user(id,username,name,age,balance) VALUES(2,'user2','老焦2',200,100.00);
insert into user(id,username,name,age,balance) VALUES(3,'user3','老焦3',200,100.00);
insert into user(id,username,name,age,balance) VALUES(4,'user4','老焦4',200,100.00);
insert into user(id,username,name,age,balance) VALUES(5,'user5','老焦5',200,100.00);

AI 代码解读
创建Bean和dao

User.java

/**
 * Created by Fant.J.
 * 2017/11/11 13:53
 */
@Entity
@Data
public class User implements Serializable{
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    @Column
    private String username;
    @Column
    private String name;
    @Column
    private Short age;
    @Column
    private BigDecimal balance;
}
AI 代码解读

UserReposiry.java

@Repository
public interface UserReposiry extends JpaRepository<User,Long>{
}

AI 代码解读
创建视图层
@RestController
public class UserController {

    @Autowired
    private UserReposiry userReposiry;

    @GetMapping("/simple/id")
    public User findById(@PathVariable Long id){
        return this.userReposiry.findOne(id);
    }
}
AI 代码解读
启动项目
img_15ea7987c8f60efede305add6d47b35c.png
image.png

服务消费者

创建模块 fantj-consumer-movie

只需要添加User bean和controller
server.port= 7901
AI 代码解读
/**
 * Created by Fant.J.
 * 2017/11/11 13:53
 */
@Data
public class User implements Serializable{
    private Long id;
    private String username;
    private String name;
    private Short age;
    private BigDecimal balance;
}
AI 代码解读
@RestController
public class MovieController {
    @Autowired
    private RestTemplate template;

    @RequestMapping("/movie/{id}")
    public User findById(@PathVariable Long id){
        return this.template.getForObject("http://127.0.0.1:7900/simple/"+id,User.class);
    }
}
AI 代码解读
启动springboot时候创建RestTemplate类
@SpringBootApplication
public class FantjConsumerMovieApplication {

    @Bean  //实例化resttemplate
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
    public static void main(String[] args) {
        SpringApplication.run(FantjConsumerMovieApplication.class, args);
    }
}

AI 代码解读
启动项目
img_14ce17231d7c426c556c36b40b4310e4.png
image.png

这就证明了服务被消费

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
26
分享
相关文章
springcloud/springboot集成NACOS 做注册和配置中心以及nacos源码分析
通过本文,我们详细介绍了如何在 Spring Cloud 和 Spring Boot 中集成 Nacos 进行服务注册和配置管理,并对 Nacos 的源码进行了初步分析。Nacos 作为一个强大的服务注册和配置管理平台,为微服务架构提供
448 14
基于MicrometerTracing门面和Zipkin实现集成springcloud2023的服务追踪
Sleuth将会停止维护,Sleuth最新版本也只支持springboot2。作为替代可以使用MicrometerTracing在微服务中作为服务追踪的工具。
280 1
Spring Cloud Alibaba与Spring Cloud区别和联系?
Spring Cloud Alibaba与Spring Cloud区别和联系?
🛡️Spring Boot 3 整合 Spring Cloud Gateway 工程实践
本文介绍了如何使用Spring Cloud Alibaba 2023.0.0.0技术栈构建微服务网关,以应对微服务架构中流量治理与安全管控的复杂性。通过一个包含鉴权服务、文件服务和主服务的项目,详细讲解了网关的整合与功能开发。首先,通过统一路由配置,将所有请求集中到网关进行管理;其次,实现了限流防刷功能,防止恶意刷接口;最后,添加了登录鉴权机制,确保用户身份验证。整个过程结合Nacos注册中心,确保服务注册与配置管理的高效性。通过这些实践,帮助开发者更好地理解和应用微服务网关。
173 0
🛡️Spring Boot 3 整合 Spring Cloud Gateway 工程实践
|
3月前
|
springcloud-config客户端启用服务发现报错找不到bean EurekaHttpClient
解决 Spring Cloud Config 客户端启用服务发现时报错找不到 bean `EurekaHttpClient` 的问题,主要涉及版本兼容性、依赖配置和正确的配置文件设置。通过检查依赖版本、添加必要的依赖项、配置文件的正确性以及启用服务发现注解,可以有效解决此问题。确保日志中没有其他错误信息也是关键步骤之一。通过这些方法,可以确保 Spring Cloud Config 与 Eureka 客户端正常工作。
70 6
AI 时代:从 Spring Cloud Alibaba 到 Spring AI Alibaba
本次分享由阿里云智能集团云原生微服务技术负责人李艳林主讲,主题为“AI时代:从Spring Cloud Alibaba到Spring AI Alibaba”。内容涵盖应用架构演进、AI agent框架发展趋势及Spring AI Alibaba的重磅发布。分享介绍了AI原生架构与传统架构的融合,强调了API优先、事件驱动和AI运维的重要性。同时,详细解析了Spring AI Alibaba的三层抽象设计,包括模型支持、工作流智能体编排及生产可用性构建能力,确保安全合规、高效部署与可观测性。最后,结合实际案例展示了如何利用私域数据优化AI应用,提升业务价值。
299 4
微服务时代的新宠儿!Spring Cloud Nacos实战指南,带你玩转服务发现与配置管理,拥抱云原生潮流!
【8月更文挑战第29天】Spring Cloud Nacos作为微服务架构中的新兴之星,凭借其轻量、高效的特点,迅速成为服务发现、配置管理和治理的首选方案。Nacos(命名和配置服务)由阿里巴巴开源,为云原生应用提供了动态服务发现及配置管理等功能,简化了服务间的调用与依赖管理。本文将指导你通过五个步骤在Spring Boot项目中集成Nacos,实现服务注册、发现及配置动态管理,从而轻松搭建出高效的微服务环境。
397 0
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
270 5
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
139 3
SpringCloud基础9——服务异步通信-高级篇
消息可靠性、死信交换机、惰性队列、MQ集群
SpringCloud基础9——服务异步通信-高级篇
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等