Skip to content

Commit 2033450

Browse files
authored
Update servicelist.md
1 parent e770dfa commit 2033450

File tree

1 file changed

+1
-124
lines changed

1 file changed

+1
-124
lines changed

docs/servicelist.md

Lines changed: 1 addition & 124 deletions
Original file line numberDiff line numberDiff line change
@@ -213,129 +213,6 @@ SDK 审核管理模块。
213213

214214

215215

216-
### 中间件与基建
217-
218-
#### Consul
219-
220-
FinClip后端采用微服务架构开发模式,在微服务中,服务治理是非常重要的一环。服务通过注册到服务中心,以 供其他服务寻得接又调用地址,从而实现架构内部的服务间调用。FinClip采用Consul作为服务治理中心,在部分 场景,Consul还充当配置中心的作用。
221-
222-
Consul分为Server节点和Client节点,在我们使用的架构中,K8S集群中的每个节点会部署普通节点(client agent), 在Kubernetes集群外的宿主机上部署的三个Server节点 (server节点是数据集群,普通agent只负责请求转发和心跳检测等)。
223-
224-
架构图如下所示:
225-
226-
![consul](/img/consul.png)
227-
228-
在这样的架构中, Consul服务端使用Raft选举,因此最少三个节点,且宕机数量不可超过半数,推荐单数节点,例如3、5、7。:
229-
230-
* Server节点部署在宿主机之中,使用docker-compose启动
231-
* Client节点部署在Kubernetes中,使用DaemonSet部署。
232-
* 集群必须 (N / 2) + 1个节点存活
233-
234-
* 当集群内LEADER节点宕机时,会发生选举,产生新的LEADER节点,集群可用
235-
* 当节点宕机数量大于Server / 2 时,集群不可用
236-
* 可扩容/缩容
237-
238-
239-
240-
#### Redis
241-
242-
 FinClip采用Redis实现数据缓存功能,Redis 是一种开源(BSD 许可)、内存中数据结构存储的开源软件,通常 用作数据库、缓存和消息代理。 Redis 提供了诸如字符串、散列、列表、集合、带范围查询的排序集合、位图、 超级日志、地理空间索引和流等数据结构。 Redis 内置复制、Lua 脚本、LRU 驱逐、事务和不同级别的磁盘持久 化,并通过 Redis Sentinel 和自动提供高可用性,在实际部署中,我们推荐客户采用Redis的集群模式,以实现高 可用性和可扩展性。
243-
244-
245-
246-
Redis 是一个高性能的 key-value 数据库。目前我们部署的 Redis 集群部署是这样的:
247-
248-
* 集群共 *6* 个 Redis 实例
249-
* 集群内部 *3**3* 从模式
250-
* Redis 版本:6.0
251-
252-
我们采用三台机服务器部署,每台服务器 2 个 Redis 实例,对于更高的 QPS 要求,我们推荐使用 6 台服务器部署,每个服务器一个 Redis 实例。在总共 6 个 Redis 实例里,其中三个 Master 节点,三个 Slave 节点,且默认情况下 Master 与 Slave 会自动避免部署在同一台机器中。
253-
254-
Redis 的拓扑图如下:
255-
256-
![redis](/img/redis.png)
257-
258-
在这样的架构中:
259-
260-
* 当集群内一个主节点宕机时,其从节点会自动升级成为主节点
261-
* 集群中从节点宕机不影响集群使用
262-
* 可扩容 / 缩容
263-
264-
* 当集群内一个主节点宕机时,其从节点会自动升级成为主节点
265-
* 集群中从节点宕机不影响集群使用
266-
* 经测试,Redis 从宕机不影响业务使用,Redis 发生主从切换时,会有秒级影响。
267-
268-
269-
270-
#### MongoDB
271-
272-
FinClip 业务数据存储支持多种数据库,通常我们采用MongoDB作为主要的存储方案,MongoDB 是一个基于分 布式文件存储的数据库,由 C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案,且支持多 机房部署。 在实际部署中,我们推荐客户使用MongoDB的副本集、分片模式,以满足可扩展、高可用的运维需 求。
273-
274-
275-
![mongo](/img/mongo.png)
276-
277-
副本集是一组维护相同数据集合的 mongod实例。副本集包含多个数据承载节点和一个可选的仲裁节点。在数据承载节点中,有且仅有一个成员为主节点,其他节点为从节点。
278-
279-
280-
281-
#### Elasticsearch
282-
283-
 对于用户行为数据,FinClip 采用 ElasticSearch 进行存储、检索和分析。Elasticsearch 是一种分布式 RESTful 搜 索和分析引擎,能够处理越来越多的用例。作为 Elastic Stack 的核心,它集中存储您的数据,以实现闪电般的快 速搜索、微调相关性和可轻松扩展的强大分析。
284-
285-
![es](/img/es.png)
286-
287-
288-
289-
#### Kafka
290-
291-
在高并发系统中,使用消息队列进行异步处理是惯用的模式。FinClip采用Kafka作为消息队列中间件,基于 Kafka的多分区设计,可以实现高吞吐量消息队列管理。Apache Kafka 是一个开源分布式事件流平台,被数千家 公司用于高性能数据管道、流分析、数据集成和关键任务应用程序。
292-
293-
同样地,在生产系统中,我们推荐使用多节点部署Kafka集群,从而实现高吞吐量、高可用已经可扩展的运维功 能:
294-
295-
![kafka](/img/kafka.png)
296-
297-
298-
299-
#### Zookeeper
300-
301-
kafka的协调选举节点,负责维护kafka节点状态。
302-
303-
304-
305-
#### MinIO
306-
307-
FinClip还用到对象存储,用于存储小程序包、图片等静态资源文件。对象存储是业界非常成熟的存储方案,在客 户的实际部署中,我们支持使用第三方对象存储,例如腾讯云COS、阿里云OSS、AWS S3等等。除此之外,在私 有化部署中,我们可以使用Minio进行部署对象存储服务服务器。
308-
309-
![minio](/img/minio.png)
310-
311-
312-
313-
### 附加组件
314-
315-
#### Ansible
316-
317-
提供自动化部署功能
318-
319-
320-
321-
#### Docker
322-
323-
提供基本的容器环境
324-
325-
326-
327-
#### Docker-Compose
328-
329-
为中间件集群建立提供必要的编排工具
330-
331-
332-
333-
#### Rancher
334-
335-
用于建立 Kubernetes 集群,并提供一个易用性极强的集群综合管理面板
336-
337-
338-
339216
#### Registry
340217

341218
用于**临时性**存储、分发在部署过程中以及后续运行时需要用到的 Docker 镜像。
@@ -344,4 +221,4 @@ FinClip还用到对象存储,用于存储小程序包、图片等静态资源
344221

345222
#### Tinygit
346223

347-
用于**临时性**存储、分发在部署过程中以及后续运行时需要用到的 Helm 编排文件,以 Git 代码的方式储存。
224+
用于**临时性**存储、分发在部署过程中以及后续运行时需要用到的 Helm 编排文件,以 Git 代码的方式储存。

0 commit comments

Comments
 (0)