架构设计
文章平均质量分 82
敦兮其若朴,旷兮其若谷
百度码农,期望通过博客激励自己进步,希望可以帮助到一些学习过程中的同学
展开
-
浅谈在线并行计算框架
ModernC++ 在线图计算引擎框架设计解析原创 2022-11-11 18:12:29 · 1034 阅读 · 1 评论 -
微服务设计模式概述
Design Patterns for Microservices微服务在企业中可以带来积极的影响。 因此,如何处理微服务体系架构(MSA)和一些微服务设计模式以及微服务体系架构的一般目标或原则是很有必要的。 以下是微服务架构实现中要考虑的四个目标原创 2022-10-11 11:56:04 · 780 阅读 · 0 评论 -
数据湖&数据仓库&仓湖一体
数据湖&数据仓库&仓湖一体首先提及一个最常用的概念数据库, 但凡是线系统基本都离不开数据库。数据库最主要的功能就是要强调事务处理, 比如 QPS(每秒查询数)、TPS(每秒事务数) 和 IOPS(每秒读写数)但是数据库擅长的是事务性工作, 对于分析型的工作并不擅长,于是诞生了数据仓库。随着企业持续的发展,虽然含金量比较高的数据都在”数据库“和”数据仓库“中。但是公司希望把生产经营相关的所有数据都保存下来,方便后续沙中淘金,可以构建起来数据湖。|而根据数据湖和数据仓库的特点,数据仓库前原创 2022-03-07 17:23:11 · 5175 阅读 · 0 评论 -
漫谈KVRocks
什么是 KVRocksKvrocks是一种基于RocksDB之上兼容RESP协议的NoSQL剑指数据库。设计的核心目标就是将原生的Redis依赖纯内存资源转化为依赖其他SSD资源,在同样保证服务性能满足需求的前提将,降低服务成本。核心功能兼容Redis 的协议(RESP)支持组从复制, 类似于Mysql BinLog复制支持namespace隔离, 类似于Redis 的不同DB高可用,支持 Redis Sentinel 自动主从切换架构设计 整体上来说架构设计不复杂,从逻辑上来原创 2022-03-02 10:40:51 · 2886 阅读 · 0 评论 -
什么是领域驱动设计
什么是DDDDDD, 即Domain-Driven Design,就是领域驱动设计的缩写。它是一种根据领域专家的输入对软件进行建模以匹配该领域的软件设计方法。它主要是为了构建复杂领域,将业务的复杂性和技术的架构的实现解耦开来。DDD并不是一种具体的架构,而是一种方法论,通过边界的划分方法构建出清晰的领域和应用边界,让架构更加容易的进行演进。核心概念值对象: 简单来说就是没有ID但是需要了解上下文的东西。例如,当我们在外面吃饭的时候,在餐厅里面选位子落座,我们会关心这个桌子是哪里生成的,编码是什么以原创 2022-02-28 16:01:30 · 5608 阅读 · 0 评论 -
云原生项目初探
文章目录背景基本概念CNCF全景图详细解读数据库Vitess: 云原生加强版的MysqlTikv: 云原生版本的KV存储运行时环境Rook:云原生环境下的存储编排系统ContainerD:从 Docker Daemon 剥离的镜像管理和容器执行技术总结备注背景现在云原生越来越重要,成为一个越来越关键的话题,我们大多数人,包括笔者在内对于云原生处于”似懂非懂“的一个状态,最近由于工作需要,也属于自己工作的一项进行梳理。基本概念CNCF:即Cloud Native Computing Foundatio原创 2021-12-21 20:49:47 · 1503 阅读 · 0 评论 -
漫谈缓存架构
漫谈缓存架构背景当前提起缓存估计又很多同学的第一反应就是Redis。的确Redis 的确可以作为缓存,而且引入redis 作为缓存是一种很重要的技术手段,但是只是这样距离真正掌握缓存架构还有一段距离,下文中会主要介绍缓存设计中的重要核心思路,大部分是文中会以Caffeine 为例介绍假设绝大多数缓存的设计都是基于一种读多写少的场景进行设计, 只有在这种场景下才会需要使用缓存技术进行优化。淘汰算法进程内缓存我们可以通过 Hash类型的Map 来实现(C++通常使用unordered_map、Jav原创 2021-09-19 12:15:54 · 198 阅读 · 0 评论 -
Redis底层实现---Ziplist
Redis底层实现—Ziplist简介redis 是开源用C语言编写的一个远程的KV词典存储服务,里面有很多经典的设计结构对后续的设计很有启发, 其中最著名的恐怕就是排序链表的底层实现—跳表。本次要说的是他的另外一个核心的实现,他的重要程度应该说一定程度上来说远高于跳表,他的名字就是压缩链表。底层数据结构Redis 有 5 种基础数据结构,分别为:string (字符串)、list (列表)、set (集合)、hash (哈希) 和 zset (有序集合) , 而这5种常见数据结构底层实现分别为:原创 2021-07-25 22:08:44 · 379 阅读 · 0 评论 -
RocksDB参数调优
前言RocksDB 是基于LSM的树存储引擎,可调参的有上百个,并且参数之间还有相互的影响,另外根据RUM猜想,读放大、写放大以及空间放大之间是制约关系,生产环境下需在三种放大因子之间进行权衡,这更增加了调优的难度。架构图RUM猜想猜想指的是在 Read Overhead,Update Overhead 和 Memory (or Storage) Overhead 中,同时优化 2 项时需要以剩余的 1 项劣化作为代价关键指标调优需要关注的关键指标:磁盘写带宽:Compaction的压力超原创 2021-06-30 17:04:02 · 973 阅读 · 0 评论 -
Pulsar-消息传递
概述Pulsar是建立在publish-subscribe模式(通常缩写为pub-sub)上的。在这种模式中,生产者将消息发布到主题。使用者订阅这些主题,处理传入的消息,并在处理完成时发送确认。创建订阅后,Pulsar将保留所有消息,即使用户已断开连接。只有当使用者确认已成功处理保留的消息时,才会丢弃这些消息。消息消息是Pulsar的基本单元, 下面表格叙述的是pulsar 的基本组件。组件描述内容(Value/data payload)消息携带着数据。虽然说数据可以有自己的原创 2021-05-24 13:10:16 · 1024 阅读 · 0 评论 -
K8S的设计理念
简介K8S 成为事实上资源调度管理事实标准。有些人甚至认为K8S已经成为了云原生时代的资源容器调度的操作系统。这么牛叉的K8S,他是怎么设计的呢?设计模块K8S的设计大致分成三大部分:Client、Master、WorkerClient: 属于用户触发请求的客户端,即Kubectl, 用户的各种触发的命令就是通过kuberctl统一封装后进行命令触发的Master:用于处理用户触发的请求,进行处理决策,Worker:命令真正的执行者,读取etcd的结果将数据最终执行...原创 2021-03-24 17:36:59 · 896 阅读 · 0 评论 -
架构设计本质
前提架构设计的前提都是与业务相结合的,任何完全抛开业务的架构都是在空谈,或者说没有意义的,每个业务系统都有自己的特点,不可一概而论。如果是做公有云化服务的,服务群体属于普通公司或者部门这种开发者,他们可能对于云的稳定性和易用性有要求。如果是做电商推荐的系统,服务群体属于购买商品的用户,可能对于推荐商品的准确性,模型反馈速度有要求。设计内核第一,确认痛点是啥:架构设计是为了解决问题而产生的,所有的设计都不是凭空想出来,是需要根据我们当前需要解决的问题例如:延迟过高是我们当前最重要解决的问题原创 2021-03-09 11:59:44 · 296 阅读 · 4 评论 -
编程范式概述
编程范式概述基本概念编程范式这个名词听起来好像比较高深,但是其实本质上是它是对于程序设计风格,或者设计思路的抽象。它并不是跟编程语言是一一绑定的关系,有些编程语言Python 天生可以支持多种编程范式。分类从编程根本思维上的差异上区分,目前主要分成两种: 命令式(指令式)编程 和 声明式 编程命令式编程:是过程导向的,告诉计算机”怎么做“,即一步一步的执行过程都需要描述清楚,计算机所有的硬件都是通过命令式编程实现的声明式编程:是结果导向的,告诉计算机”做什么“,以数据结构的形式来表达程序原创 2021-03-06 18:55:15 · 302 阅读 · 2 评论