8.2k 7 分钟

# 初识 Docker # Docker 介绍 微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。 分布式系统中,依赖的组件非常多,不同组件之间部署时往往会产生一些冲突。 在数百上千台服务中重复部署,环境不一定一致,会遇到各种问题 # 应用部署环境问题 大型项目组件较多,运行环境也较为复杂,部署时会碰到一些问题: 依赖关系复杂,容易出现兼容性问题 开发、测试、生产环境有差异 例如一个项目中,部署时需要依赖于 node.js、Redis、RabbitMQ、MySQL 等,这些服务部署时所需要的函数库、依赖项各不相同,甚至会有冲突。给部署带来了极大的困难。 #...
15k 14 分钟

# 微服务 # Nacos 的服务注册表结构是怎样的 # 参考话术 Nacos 采用了数据的分级存储模型,最外层是 Namespace,用来隔离环境。然后是 Group,用来对服务分组。接下来就是服务(Service)了,一个服务包含多个实例,但是可能处于不同机房,因此 Service 下有多个集群(Cluster),Cluster 下是不同的实例(Instance)。 对应到 Java 代码中,Nacos 采用了一个多层的 Map 来表示。结构为 Map<String, Map<String, Service>>,其中最外层 Map 的...
8k 7 分钟

# 分布式事务 # 介绍 就是指不是在单个服务或单个数据库架构下,产生的事务 跨数据源的分布式事务 跨服务的分布式事务 在数据库水平拆分、服务垂直拆分之后,一个业务操作通常要跨多个数据库、服务才能完成,例如电商行业中比较常见的下单付款案例,包括以下几个行为: 创建新订单 扣减商品库存 从用户账户扣除金额 完成上述操作要完成三个不同的微服务和三个不同的数据库 订单创建、库存扣减、账户扣款在每一个服务和数据库内是一个本地事务,可以保证 ACID 原则 # 理论基础 # CAP 定理 # 介绍 1998 年,加州大学的计算机科学家 Eric Brewer...
11k 10 分钟

# 初识 Sentinel # 雪崩问题及解决 # 雪崩问题 微服务中,服务间调用关系错综复杂,一个微服务往往依赖于多个其它微服务 如果服务提供者 I 发生了故障,当前的应用的部分业务因为依赖于服务 I,因此也会被阻塞。此时,其它不依赖于服务 I 的业务似乎不受影响 但是,依赖服务 I 的业务请求被阻塞,用户不会得到响应,则 tomcat...
7.5k 7 分钟

# 初识 RabbitMQ # 同步和异步通讯 同步通讯:就像打电话,需要实时响应 异步通讯:就像发邮件,不需要马上回复 # 同步通讯 优点: 时效性较强,可以立即得到结果 缺点: 耦合度高 性能和吞吐能力下降 有额外的资源消耗 有级联失败问题 # 异步通讯 为了解除事件发布者与订阅者之间的耦合,两者并不是直接通信,而是有一个中间人(Broker)。发布者发布事件到 Broker,不关心谁来订阅事件。订阅者从 Broker 订阅事件,不关心谁发来的消息 Broker...
20k 18 分钟

# Nacos 配置管理 # 统一配置管理 当微服务部署的实例越来越多,达到数十、数百时,逐个修改微服务配置就会让人抓狂,而且很容易出错。我们需要一种统一配置管理方案,可以集中管理所有实例的配置 Nacos 一方面可以将配置集中管理,另一方可以在配置变更时,及时通知微服务,实现配置的热更新 # 再 nacos 中添加配置文件 注意:项目的核心配置,需要热更新的配置才有放到 nacos 管理的必要。基本不会变更的一些配置还是保存在微服务本地比较好。 # 从微服务拉取配置 微服务要拉取 nacos 中管理的配置,并且与本地的 application.yml 配置合并,才能完成项目启动。 因此...
11k 10 分钟

# 副本集 - Replica Sets # 简介 MongoDB 中的副本集(Replica Set)是一组维护相同数据集的 mongod 服务, 副本集可提供冗余和高可用性,是所有生产部署的基础 副本集类似于有自动故障恢复功能的主从集群,通俗的讲就是用多台机器进行同一数据的异步同步,从而使多台机器拥有同一数据的多个副本,并且当主库当掉时在不需要用户干预的情况下自动切换其他备份服务器做主库。而且还可以利用副本服务器做只读服务器,实现读写分离,提高负载 # 副本集三个角色 # 主要成员(Primary) 主要接收所有写操作,就是主节点 #...
8.9k 8 分钟

# MongoDB 相关概念 # 业务应用场景 # 解决三高需求 High performance - 对数据库高并发读写的需求 Huge Storage - 对海量数据的高效率存储和访问的需求 High Scalability && High Availability- 对数据库的高可扩展性和高可用性的需求 # MongoDB 简介 MongoDB 是一个开源、高性能、无模式的文档型数据库,当初的设计就是用于简化开发和方便扩展,是 NoSQL 数据库产品中的一种。是最像关系型数据库(MySQL)的非关系型数据库 它支持的数据结构非常松散,是一种类似于...
7.6k 7 分钟

# 初识 Docker # docker 概念 Docker 是一个开源的应用容器引擎 诞生于 2013 年初,基于 Go 语言实现 Docker 可以让开发者打包他们的应用以及依赖到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上 容器是完全使用沙箱机制,相互隔离 容器性能开销极低 Docker 从 17.03 版本之后分为 CE(社区版)和 EE(企业版) # 安装 docker Docker 可以运行在 MAC、Windows、CentOS、UBUNTU 等操作系统上 # 1、yum 包更新到最新 yum update# 2、安装需要的软件包, yum-util...
8.6k 8 分钟

# 数据库概述 # 数据库相关概念 名称 全程 简称 数据库 存储数据的仓库,数据是有组织的进行存储 DataBase(DB) 数据库管理系统 操纵和管理数据库的大型软件 DataBase Management System(DBMS) SQL 操作关系型数据库的编程语言,定义了一套操作关系数据库统一标准 Structured Query Language(SQL) # MySQL 安装及启动 # 服务启动与停止 net start mysql180 net stop mysql180 # 连接服务客户端 mysql -uroot -proot # MySQL 数据库 #...