1个主节点【默认端口8761】,2个从节点
SpringBoot:1.5.3版
SpringCloud:1.3.1版
项目git
bootstrap.yml 基本配置 添加了安全校验 security (用户名与密码)
了解基本概念:分布式、集群、微服务…
分布式:把一个应用拆成几个应用部署到不同的机器上
集群:同一个应用部署到不同的机器上
微服务:比分布式拆分应用的颗粒度更细,拆分为单个的服务,比如用户服务、短信服务…
eureka-server: 服务端-服务注册中心 =》接收eureka-client服务信息,并复制到其它eureka-server
eureka-client: 客户端-服务提供者或者消费者
作为生产者(register):向eureka-server发送服务注册信息
作为消费者(getRegistery):获取eureka-server中服务的注册信息,并缓存到客户端,下次不用去注册中心获取,直接可以访问服务。 (如果eureka挂了,仍能访问服务的原因)
了解基本概念:分布式、集群、微服务…
分布式:把一个应用拆成几个应用部署到不同的机器上
集群:同一个应用部署到不同的机器上
微服务:比分布式拆分应用的颗粒度更细,拆分为单个的服务,比如用户服务、短信服务…
SpringCloud 核心组件:Netflix Eureka、Spring Zuul/Gateway、Feign、Ribbon、Hystrix、Stream、Config、Sleuth
常用做配置中心的组件:db、file、git、apolloconfig、consul、etcd3、nacos、zk
名称 | 核心 | 优劣 |
---|---|---|
db | 将配置信息存于数据库中 | 多连接,共享,受限于数据库 |
file | 存于本地文件中 | 多服务需要多拷贝,修改麻烦 |
git | 共同维护配置仓库 | 通过分支区分各环境(SpringCloud官网) |
apolloconfig | 数据库、本地文件 单独部署服务、依赖Eureka 、Java |
设计 Namespace 与SpringCloud 很好衔接,支持事件驱动 可通过UI页面配置 |
consul | go语言开发的服务注册、配置组件 支持http和dns协议, 采用http api 注册、配置 |
支持Service Mesh 桥接服务网格与传统网络 … |
etcd3 | 高可用KV存储系统, 用于分享配置,服务发现 |
k8s 中来维护服务状态信息, 支持curl 等方式,写速度快 使用 Raft 实现分布[式 |
nacos | ali开源发现、配置、管理服务 | 架构 有UI界面,可通过UI页面配置 |
zk | 对元数据管理、leader选举 | 大数据中协助服务(选举)、 kafka中选举leader 无UI配置页面 |
Seata config 分析 github、Seata config 分析 gitee
常用的服务发现:file、zk、redis、nacos、eureka、consul、etcd3、sofa
名称 | 核心 | 优劣 |
---|---|---|
file | 存储、读取、比较 | 共享文件 |
zk | Znode的引用方式是路径引用、CA | 无UI |
redis | 基于订阅与发布 | |
nacos | ConcurrentHashMap、 file、事件 支持AP/CP模式 |
社区活跃 |
eureka | 3级缓存、instanceId、 applicationName、ip+port、 ConcurrentHashMap<String, Map<String, Lease appName,也就是服务名, 内层map的key是instanceId、AP模式(最终一致性) |
SpringCloud官网、停止维护 |
consul | go语言开发、CA 强一致性 | |
etcd3 | 高可用KV存储系统, 用于分享配置,服务发现 Raft强一致性算法的具体实现 |
CoreOS、Kubernetes和CloudFoundry 等知名项目均在生产环境中使用了etcd |
sofa | https://github.com/sofastack | 金融级云原生架构的中间件 |
介绍SpringBoot常见问题总结,便于快速分析。
//时间格式:
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private LocalDateTime createTime;
@NotEmpty(message="")
@NotNull(message="")
@Length(Min=1,Max=6)
//正则表达式 [2020-05-20]
@Pattern(regexp = "^[a-z0-9_]+$", message = "数字、26个小写英文字母和下划线")
//嵌套实体校验
@Valid
/**
* 开启嵌套实体校验
*/
@Valid
@ApiModelProperty("模板字段集合")
private List<TemplateFields> templateFieldsList;
介绍Nacos,主要包括服务发现、配置管理、服务治理、UI、社区活跃。
基础架构及功能图
# 下载并编译
git clone https://github.com/alibaba/nacos.git
cd nacos/
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
ls -al distribution/target/
// change the $version to your actual path
cd distribution/target/nacos-server-$version/nacos/bin
# 启动 (非集群稳定版本 )
sh startup.sh -m standalone
# 访问路径
# http://127.0.0.1:8848/nacos