SpringCloud⼊门及创建分布式项⽬分布式和微服务的关系
1、了解微服务
购优惠 m.fenfaw/
1.1 什么是微服务
微服务是⼀种架构风格
⼀个应⽤拆分为⼀组⼩型服务
每个服务运⾏在⾃⼰的进程内,也就是可独⽴部署和升级
服务之间使⽤轻量级HTTP交互
服务围绕业务功能拆分
可以由全⾃动部署机制独⽴部署
去中⼼化,服务⾃治。服务可以使⽤不同的语⾔、不同的存储技术
1.2 微服务架构
服务调⽤
服务降级
服务注册与发先
服务熔断
负载均衡
服务消息队列
服务⽹关
配置中⼼管理
⾃动化构建部署
服务监控
全链路追踪
服务定时任务
调度操作
2、了解SpringCloud
2.1 SpringCloud是什么
SpringCloud是分布式微服务架构的站式解决⽅案,是多种微服务架构落地技术的集合体,俗称微服务全家桶。
Spring Cloud provides tools for developers to quickly build some of the common patterns in distributed systems (e.g.
configuration management, service discovery, circuit breakers, intelligent routing, micro-proxy, control bus, one-time tokens, global locks, leadership election, distributed sessions, cluster state). ---摘⾃官⽹
根据官⽅对SpringCloud的描述,SpringCloud提供了⼀系列⼯具,能够让开发者快速的构建分布式系统。所以SpringCloud并不是⼀个新技术,只是整合了⼀些常⽤的技术进⾏封装,然后结合SpringBoot,我们就可以快速构建分布式项⽬。
SpringCloud包含了很多的技术,看官⽹的⽬录就知道了,⼀个屏幕都截不全。往往⼀个技术还没学会就告诉我已经不⽤了,特喵的。
2.2 SpringCloud停更组件和替换
SpringCloud的Hoxton版本,和之前的版本相⽐,⽤新的组件替换掉了原来⼤部分的组件,⽼的组件现在处于 停更不停⽤ 的状况。
详情见下图(× 的表⽰之前的组件,现在停更了的;√ 的表⽰新的替换后的组件):
服务注册中⼼
Eureka:官⽅停⽌更新,并且已经有更好的替代产品了,可以使⽤,但是官⽅已经不建议使⽤了。
Zookeeper:某些⽼系统,以前是⽤的Zookeeper + Dubbo,后来做技术升级,结果发现SpringCloud的Eureka停更了,然后就⽤了最少的技术切换,那么就⽤了Zookeeper做注册中⼼。
Consul:go语⾔开发的,也是⼀个优秀的服务注册框架,但是使⽤量较少,风头都被Nacos抢了。
Nacos:来⾃于SpringCloudAlibaba,在企业中经过了百万级注册考验的,不但可以完美替换Eureka,还能做其他组件的替换,所以强烈建议使⽤,是学习的重点。
服务调⽤
Ribbon:也进⼊了维护状态,停⽌更新了,但是Spring官⽅还在使⽤。
LoadBalancer:Spring官⽅推出的⼀个新的组件,打算逐渐取代掉Ribbon,但是现在还处于萌芽状态。
服务调⽤2
Feign:Netflix 公司产品,也停⽌更新了。
OpenFeign:Spring社区等不了Netflix更新了,然后就⾃⼰做了⼀个组件,不⽤Feign了。
服务降级
Hystrix:官⽹不推荐使⽤,但是中国企业中还在⼤规模使⽤。
Resilience4J:官⽹推荐使⽤,但是国内很少⽤这个。
Sentienl:来⾃于SpringCloudAlibaba,在中国企业替换Hystrix的组件,国内强烈建议使⽤。
服务⽹关
Zuul:Netflix 公司产品,公司内部产⽣分歧,有的⼈想⾃⼰出⼀个Zuul2。
Zuul2:也是Netflix 公司准备出的产品,但是由于内部分歧,所以Zuul2已经胎死腹中了。
gateway:Spring社区⾃⼰出的⽹关组件,官⽅隆重介绍和极度推荐的⽹关服务组件。
服务配置
Config:⽬前也在使⽤,风头被Nacos抢了。
Nacos:来⾃于SpringCloudAlibaba,后来居上,把Config给替换了。
服务总线
Bus:SpringCloud原⽣的服务总线组件,现在风头也被Nacos抢了。
Nacos:来⾃于SpringCloudAlibaba,后来居上,把Bus给替换了。
综上可以看出,Nacos 是重中之重,⼀个组件就替换掉了原来的⼏个组件。
3、创建分布式项⽬
分布式项⽬和单体项⽬不⼀样,⼀般都会分为多个模块,构成⽗⼯程⼦⼯程的关系。⼀般单个SpringBoot项⽬,pom⽂件总是有这么⼀段
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
⽗项⽬指定为SringBoot某个版本,后续使⽤相关的jar包都继承⽗项⽬指定的版本信息。
下⾯来新建⼀个分布式项⽬的⽗⼯程
3.1 创建⽗⼯程
创建微服务cloud整体聚合⽗⼯程Project,有8个关键步骤:
(1)New Project - maven⼯程
(2)聚合总⽗⼯程名字
(3)Maven选版本
(4)⼯程名字
(5)字符编码 - Settings - File encoding
(6)注解⽣效激活 - Settings - Annotation Processors
(7)Java编译版本选8
(8)File Type过滤 - Settings - File Type
创建完后,可以把src⽬录删除,因为⽗⼯程不需要,删除后变成了下⾯这样
然后需要修改l⽂件,注意看注释
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="/POM/4.0.0"
xmlns:xsi="/2001/XMLSchema-instance"
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论