ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

SpringCloud学习笔记1

2022-01-19 11:34:40  阅读:134  来源: 互联网

标签:Spring 服务 SpringCloud boot 笔记 eureka 学习 spring Cloud


一、分布式服务架构的发展历程

第一代服务框架
	Dubbo(Java)、Orleans(.Net)等
第二代服务框架
	【Spring Cloud等】
第三代服务框架
	Service Mesh(服务网格) => 例如Service Fabric、lstio、Linkerd、Conduit等

二、SpringCloud介绍

Spring提供了一系列工具,可以帮助开发人员迅速搭建分布式系统中的公共组件(比如:配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,主节点选举, 分布式session, 集群状态)。协调分布式环境中各个系统,为各类服务提供模板性配置。使用Spring Cloud, 开发人员可以搭建实现了这些样板的应用,并且在任何分布式环境下都能工作得非常好,小到笔记本电脑, 大到数据中心和云平台。

Spring Cloud官网的定义比较抽象,我们可以从简单的东西开始。Spring Cloud是基于Spring Boot的, 最适合用于管理Spring Boot创建的各个微服务应用。要管理分布式环境下的各个Spring Boot微服务,必然存在服务的注册问题。所以我们先从服务的注册谈起。既然是注册,必然有个管理注册中心的服务器,各个在Spring Cloud管理下的Spring Boot应用就是需要注册的client

Spring Cloud使用erureka server,  然后所有需要访问配置文件的应用都作为一个erureka client注册上去。eureka是一个高可用的组件,它没有后端缓存,每一个实例注册之后需要向注册中心发送心跳,在默认情况下erureka server也是一个eureka client ,必须要指定一个 server。

Spring Cloud作为第二代微服务的代表性框架,已经在国内众多大中小型的公司有实际应用案例。许多公司的业务线全部拥抱Spring Cloud,部分公司选择部分拥抱Spring Cloud。例如,拍拍贷资深架构师杨波老师就根据自己的实际经验以及对Spring Cloud的深入调研,并结合国内一线互联网大厂的开源项目应用实践结果,认为Spring Cloud技术栈中的有些组件离生产级开发尚有一定距离,最后提出了一个可供中小团队参考的微服务架构技术栈,又被称为“中国特色的微服务架构技术栈1.0”:

三、Spring Cloud Netflix 概念

组件名 作用介绍
Eureka 服务治理组件,包含服务注册与发现
Feign 基于Ribbon和Hystrix的声明式服务调用组件(使用的是HTTP协议)
Ribbon 客户端负载均衡的服务调用组件
Zuul 网关组件,提供智能路由、访问过滤等功能
Hystrix 容错管理组件,实现了熔断器
Archaius 外部化配置组件

四、创建一个Eureka注册中心

1、选择三个组件:SpringBoot DevTools、Eureka Server、Spring Web

<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
			<optional>true</optional>
		</dependency>

2、添加配置【注册中心】

#配置Eureka服务 默认端口8761
server.port=7777
eureka.instance.hostname=localhost
#registerWithEureka:false和fetchRegistry:false表明自己是一个eureka server
eureka.client.registerWithEureka=false
eureka.client.fetchRegistry=false
eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/

3、启动类添加注解

@SpringBootApplication
//代表是尤里卡注册中心
@EnableEurekaServer
public class SpringcloudeurekaApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringcloudeurekaApplication.class, args);
    }
}

4、启动项目访问;http://localhost:7777 、查看有哪些微服务(现在肯定是空)

五、创建一个Client微服务客户端【Client001】

1、选择三个组件:SpringBoot DevTools、Enreka Discovery Client、Spring Web

<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
			<optional>true</optional>
		</dependency>

2、添加配置【一个微服务】

# 设置服务端口
server.port=8881
#  设置服务名 可以相同、相同则为后面的负载均衡准备
spring.application.name=hello-service
#  设置注册中心地址
eureka.client.service-url.defaultZone=http://localhost:7777/eureka

3、添加Conroller处理器方法

@RestController
@RequestMapping("/student")
public class StudentController {
	
	@RequestMapping("/index001")
	public Object index001() {
		return "student_index001";
	}
}

4、启动类添加注解并进行测试

//@EnableEurekaClient 只支持Eureka注册中心,@EnableDiscoveryClient 支持Eureka、Zookeeper、Consul 这三个注册中心。
@SpringBootApplication
@EnableEurekaClient
public class SpringcloudclientApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringcloudclientApplication.class, args);
    }
}

六、创建另一个Client微服务客户端【Client002】并调用Client001【默认已实现负载均衡】

1、选择四个组件:SpringBoot DevTools、Enreka Discovery Client、Spring Web、OpenFeign

<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-openfeign</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
			<optional>true</optional>
		</dependency>

2、添加配置【一个微服务】

server.port=8080
spring.application.name=feign1
eureka.client.service-url.defaultZone=http://localhost:7777/eureka

3、定义远程调用Client001的接口

//value 服务名称
@FeignClient(value = "service1")
public interface FeignService1 {
    @RequestMapping("/index1")
    String test1();
}

4、定义远程调用代码

@RestController
public class TestController {
    @Autowired
    FeignService1 feign;

    @RequestMapping("/test1")
    public String test1(@RequestParam("name")String name){
		System.out.println(name);
        return "其他调用"+feign.test1();
    }
}

5、启动类添加注解并进行测试

@SpringBootApplication(scanBasePackages = "packages")
@EnableEurekaClient
//扫描Feign包
@EnableFeignClients(basePackages = "packages")
public class Springcloudserver1Application {
    public static void main(String[] args) {
        SpringApplication.run(Springcloudserver1Application.class, args);
    }
}

标签:Spring,服务,SpringCloud,boot,笔记,eureka,学习,spring,Cloud
来源: https://www.cnblogs.com/xiaojizha/p/15821542.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有