架构
diannao720
这个作者很懒,什么都没留下…
展开
-
【无标题】
1. 概述ZooKeeper是一个开源的分布式协调服务,用于实现分布式系统中的数据管理、同步服务、集群管理等功能。2. 功能架构- 数据注册与管理:支持树形数据节点结构- 集群管理:管理集群成员状态- 同步服务:同步提供数据节点更改通知- 配置维护:集中管理配置信息- 分布式锁:提供分布式锁服务- 服务注册发现:支持服务注册与发现3. 技术架构- 主从复制架构:一个Leader,多个Follower- ZAB协议:在主从间达成数据一致。原创 2023-08-28 15:32:44 · 504 阅读 · 0 评论 -
Redis的介绍
1. 概述Redis是一个基于内存的高性能NoSQL键值数据库,支持网络访问和持久化特性。2. 功能架构Redis提供字符串、哈希、列表、集合、有序集合、位数组等多种数据结构,支持事务、Lua脚本、发布订阅、流水线等功能。3. 技术架构Redis使用单线程的请求-响应模型,基于事件循环的非阻塞I/O访问技术来处理并发,使用异步复制实现主从服务架构。4. 部署架构Redis支持简单的单实例部署,也可以使用Sentinel实现高可用自动故障转移,或通过Cluster实现分区容错。5. 安全架构。原创 2023-08-26 20:17:43 · 1026 阅读 · 0 评论 -
Abase数据库管理系统
1. 概述Abase是一个开源的分布式数据库中间件,实现MySQL数据库的自动扩缩容、故障转移和查询路由。2. 功能架构- 读写分离:拆分为主从两套服务- 自动扩缩容:根据负载水平完成扩容- 负载均衡:基于查询解析的路由- 故障转移:快速切换新主库提供服务- 监控平台:SQL监控和性能监控3. 技术架构- Proxy代理节点:实现连接接入和查询转发- Syncer节点:同步主库binlog至从库- Heartbeat模块:集群心跳检测。原创 2023-08-26 20:02:42 · 480 阅读 · 0 评论 -
ByteKV简单介绍
总体来说,ByteKV表现出色的是性能,适合高速Key-Value场景。- Redis: ByteKV在分布式方面更强大,但不支持丰富数据结构。- Aerospike: 相比 ByteKV 不开源,但支持更复杂查询。- Cassandra: 性能弱于ByteKV,擅长大规模数据。- TiKV: 功能上类似,但ByteKV更注重简单易用。- API:KV读写接口、多租户、访问控制等接口。- 运维模块:监控告警、自动扩缩容、调度优化等。- 核心模块:集群管理、读写分离、空间管理等。原创 2023-08-26 19:54:07 · 365 阅读 · 0 评论 -
Flink的简要概述
Flink支持事件时间和处理时间的处理方式,并提供了丰富的窗口操作和状态管理机制,以支持复杂的流处理逻辑。1. 对比Apache Storm:与Storm相比,Flink提供了更高级的流处理功能和状态管理能力,支持更复杂的窗口操作和事件时间处理。请注意,Flink的具体实现和配置取决于特定的部署环境和使用案例,上述是对Flink架构的一般描述。3. 灵活的处理语义:Flink支持事件时间和处理时间的处理方式,可以进行丰富的窗口操作和状态管理,适应不同的实时数据处理需求。原创 2023-08-25 20:58:23 · 814 阅读 · 0 评论 -
软件架构阐述
MVC全称Model-View-Controller,是一种分离视图和业务逻辑的软件设计典范,通过解耦来提高灵活性和复用性。面向服务的架构(SOA)通过服务接口进行松耦合的组件编排,可以灵活可扩展。CQRS是命令查询职责分离的模式,读取和更新使用不同接口,可以提高性能。表示软件架构的高层设计理念和方法学,如面向服务、面向对象、管道化、分层等。要满足一致性、性能等需求。通过服务化、队列转换、分布式等方式,实现软件的伸缩性和可扩展性。通过限流、隔离、降级、熔断等策略,设计故障处理机制,提高容错性。原创 2023-08-24 20:27:13 · 200 阅读 · 0 评论 -
Kafka架构必选组件之一
Broker, Topic, Partition: 服务节点、消息主题、分区日志。- Leader, Follower, ISR, OSR: 副本leader选举机制。- RocketMQ: 阿里开源消息队列,有类似功能,但Kafka更注重流数据处理。- RabbitMQ: 支持更多协议,但Kafka性能更好,消息顺序处理更优。- Pulsar: 类 Kafka 产品,提供更多云原生支持。- MetaMQ: 类 Kafka 产品,存储模式更灵活。- ZeroMQ: 更注重实时消息传递,不具备队列功能。原创 2023-08-24 19:53:47 · 59 阅读 · 0 评论 -
MySQL数据库软件
不同引擎有各自的特点,InnoDB支持事务、行锁,MyISAM支持全文索引等。支持ACID事务,通过undo log、redo log来保证事务的一致性、持久性。MySQL索引主要有B+树索引、哈希索引、全文索引等。通过Hash、Range、List等方式将数据水平或垂直拆分,使数据库扩展性和性能更好。查询优化器分析SQL语句,通过考虑统计信息、索引等进行查询计划优化,选择最优访问路径。MySQL提供丰富的监控指标、进程列表、慢日志等用于跟踪数据库运行情况。通过主从切换、哨兵模式等机制来避免主库单点故障。原创 2023-08-23 19:05:04 · 131 阅读 · 0 评论 -
微服务之间传值
通过消息队列传递参数,实现解耦和削峰,比如使用Kafka、RabbitMQ等。使用Istio等服务网格,其Sidecar代理可以实现流量管理、限流等功能。通过以上设计,可以优化微服务之间的传参性能,防止因高并发造成的故障。微服务之间通过异步非阻塞的方式通信,避免因同步等待造成的延迟累积。使用Redis等缓存中间存储参数,减少直接访问数据库带来的压力。加强参数校验,避免不合法的参数传递到下游,减少无效调用。设置合理的服务调用超时时间,避免长时间的不确定等待。对接口加上限流器,例如漏桶算法,控制流量强度。原创 2023-08-23 18:40:52 · 96 阅读 · 0 评论 -
高并发网站的负载均衡设计
对于跨机房跨地区的场景,在服务端实现负载均衡,根据用户就近原则路由流量。在服务集群内部,使用软负载均衡,根据策略路由请求到后端不同的服务器实例。在入口使用专业的硬件F5等负载均衡器,实现流量分发,并承担第一层保护。结合DNS,使用轮询或一致性哈希方式将请求分散到后端不同的真实服务器。尽量采用无状态的HTTP/DNS负载均衡,避免流量集中造成单点压力。综上方式,构建多个负载均衡层次,逐步分散和缓解流量,实现负载均衡。针对静态资源,使用CDN实现分布式缓存和负载均衡,降低源站压力。5. 无状态负载均衡。原创 2023-08-23 18:32:02 · 1454 阅读 · 0 评论 -
Disruptor并发编程框架
Disruptor的核心数据结构是RingBuffer环形队列,用于存储客户端的并发数据并在生产者和消费者之间传递。Disruptor使用事件流水线的方式传递数据,生产者生产事件放入RingBuffer,消费者从RingBuffer读取事件并处理,两者高效解耦。Disruptor完全无锁实现,仅仅使用CAS机制来控制对RingBuffer的并发访问,避免了锁的开销。可以为RingBuffer设置多个事件处理器,形成异步的事件处理流水线,非常适合批量事件处理场景。7. 支持事件处理器。3. 流水线生产消费。原创 2023-08-22 14:03:52 · 78 阅读 · 0 评论 -
ZooKeeper 的工作原理
客户端的写请求会被转发给 Leader 节点,Leader 生成事务提案并使用 ZAB 协议广播给所有 Follower 节点,获得半数以上节点的确认后即可提交。客户端可以从任意的 Follower 节点读取数据,如果该节点的数据副本不是最新的,则会导致读取旧数据,ZooKeeper 会使用一致性协议来修复它。客户端可以在节点上注册 Watcher 监听器,当该节点状态发生变化时,会触发注册的回调函数,实现分布式通知。ZooKeeper 支持持久节点、临时节点、序列节点等不同类型,用于表示不同的业务语义。原创 2023-08-21 17:02:04 · 1337 阅读 · 0 评论 -
分布式协调服务的基本原理
综上,分布式协调服务主要通过数据复制、领导选举、广播通信等机制实现节点之间的协调和调度。原创 2023-08-21 16:47:54 · 99 阅读 · 0 评论 -
分布式协调服务
这些协调服务为构建健壮的分布式系统提供了重要支撑,能有效减少分布式协作的复杂度。不同服务有各自的侧重点,可以根据需求选择使用。ZooKeeper是一个开源的分布式协调服务,提供分布式锁、leader选举、状态同步、命名服务等功能。Eureka是Netflix开源的服务发现组件,用于管理与微服务架构中的服务实例信息。Doozer是Heroku开源的一款高可用的分布式数据存储,用于存储配置、服务发现。Etcd是由CoreOS开发的一个分布式键值存储系统,常用于服务发现、配置共享。原创 2023-08-21 16:41:45 · 220 阅读 · 0 评论 -
zookeeper详细介绍
ZooKeeper提供了高性能、稳定的分布式数据管理和协调服务,被大数据生态广泛采用。原创 2023-08-21 16:39:00 · 1575 阅读 · 0 评论 -
大型电商网站的软件架构
使用多台服务器集群,实现交易、支付、商品搜索等核心功能的分布式部署,并使用负载均衡器对请求进行分发,以承载大量访问流量。数据库可以进行分库分表,商品信息、订单数据、用户数据分别存储在不同的表中,同时对热点数据表进行水平拆分,减轻单表压力。将系统拆分为商品、订单、用户、购物车、支付、物流等多个微服务模块,每个微服务可独立部署和扩展。使用Redis等缓存系统,缓存热点数据和计算结果,减少数据库访问压力。使用CDN缓存静态资源,使用本地缓存池缓存计算结果,避免重复计算。1. 采用可扩展的分布式架构。原创 2023-08-16 16:40:21 · 230 阅读 · 0 评论 -
I/O多路复用技术
如果是大型上万TCP连接的场景显然不合适,然而,epoll并没有这个限制,它支持的文件描述符上限是操作系统的最大文件句柄数,最大文件句柄数由内存关系比较大,可通过cat /proc/sys/fs/file -max查看。I/O多路服用技术通过把多个I/O的阻塞复用到同一个select的阻塞上,从而使得系统在单线程的情况下可以同时处理多个用户请求。三.支持I/O多路复用系统调用有select,pselect,poll,epoll,主流使用select,epoll。2.系统不需要额外的进程或线程;原创 2023-08-14 10:06:40 · 84 阅读 · 0 评论 -
Transformer架构
Transformer架构是一种重要的神经网络模型架构,最初由Vaswani等人在2017年提出,并在机器翻译任务上取得了显著的性能提升。Transformer架构的优势在于它可以处理较长的输入序列,并且由于并行化的设计,训练和推理速度较快。此外,自注意力机制使得模型能够捕捉输入序列中不同位置之间的依赖关系,增强了模型的表达和建模能力。在自注意力机制中,输入序列中的每个位置都与其他位置进行交互,根据它们之间的相关性分配不同的权重。这有助于模型捕捉输入序列中的全局信息,并建立更好的表示。原创 2023-08-08 16:19:31 · 2217 阅读 · 0 评论 -
Encoder-Decoder架构
解码器是一个生成模型,它根据编码器生成的表示向量和之前生成的部分输出序列,逐步生成最终的输出序列。通常,编码器使用循环神经网络(例如,长短时记忆网络,LSTM)或者Transformer编码器来逐步处理输入序列,每一步都考虑上下文信息,并逐渐构建出表示向量。给定输入序列和对应的目标输出序列,模型的目标是最小化生成序列与目标序列之间的差异(通常使用交叉熵损失函数)。总之,Encoder-Decoder架构是一种常见的神经网络模型架构,由编码器和解码器组成,用于将输入序列转换为输出序列。原创 2023-08-08 14:17:27 · 899 阅读 · 0 评论 -
Decoder-only架构
Decoder-only架构被广泛应用于各种NLP任务,其中最著名的是OpenAI的GPT系列模型(如GPT、GPT-2和GPT-3)。在预训练之后,模型可以进行有监督微调,用于特定的下游任务(如机器翻译、文本生成等)。在传统的编码器-解码器架构中,编码器负责将输入序列(如文本)编码成一个稠密的表示,然后解码器根据这个表示生成输出序列(如翻译的文本)。总之,Decoder-only架构是一种通过解码器生成输出序列的神经网络模型架构,它具备强大的语言生成和理解能力,在自然语言处理领域有广泛的应用。原创 2023-08-08 14:07:41 · 2451 阅读 · 0 评论 -
混部系统介绍
定义:集群管理系统;作用:发挥空闲资源更大价值;产品:国外:Borg, Twine, Protean, Mesos, YARN and K8S;国内:Caelus(腾讯),Koordinator(阿里),百度。原理:设计原则:1.容器引擎2.实例管理3.镜像管理4.资源调度5.隔离技术6.混部策略开源研究:阿里koordinator:Github 地址:https://github.com/koordinator-sh/koordinator原创 2022-04-18 19:41:35 · 395 阅读 · 0 评论