![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
架构
文章平均质量分 61
Ethan3014
头发多睡眠足有妹子的程序员
展开
-
假设面试:作为一名架构师,面对一个复杂的业务系统,如何一步步设计和实现?以公司现有业务为例
flexport作为一个货运系统,首先我们要明白我们的客户是谁,我们的客户主要是shipper和consignee,shipper主要是工厂,consignee主要是工厂或者商家。主要业务流程: shipper将货物交付给flexport,flexport联系carrier(轮船公司),将货物运送到consignee指定地点。原创 2023-03-18 11:56:06 · 582 阅读 · 0 评论 -
秒杀轻重分离
场景以秒杀为例,不能因为参加秒杀的商品的突发请求就拖垮整个系统。另外秒杀商品和正常商品的下单流程以及优化思路都不一样,所以即便都是下单,也要使用不同的处理逻辑。目的1,容错,部分系统的失败不影响全局2,隔离,不同的逻辑使用不同的优化思路做法1、渠道分离:如优先、无线服务的分离;2、部署分离:如电信、联通、教育、海外服务的分离3、快慢分离:如文字、图片、视频、下载等服务的分离4、用户分离:按set划分系统为用户提供服务,常用的方式是按照游戏世界(区)、按UIN号段、按UIN取模等方式做到服务原创 2020-10-29 10:44:11 · 168 阅读 · 1 评论 -
使用gob实现简单的本地队列
gob 使用https://pkg.go.dev/encoding/gob#example-package-Basic用法利用gob的流式自解析能力,我们可以把数据变成一个stream 流写入文件,然后用另一个线程从文件中读出这些数据。为了回收和避免竞争,可以写一个文件,文件数太大或者超过一定时间以后就生成新文件简单说一下逻辑:调用者传入dir, 和dataHandler写入者逻辑:扫描dir,把所有文件名发送给接收者打开文件 queue.writer.current.timestamp原创 2020-10-28 11:59:40 · 227 阅读 · 0 评论 -
如何编写易于测试的package
隔离db和rpc《架构整洁之道》里面说了,对于db, rpc等外部访问,必须进行隔离,业务代码不能与具体的db和rpc交互,应该把db和rpc的stub抽象成interface,这样便于替换db和rpc,使用interface也便于unit test设计模式即便是对外部的访问抽象成了interface,比如rpc client,但是对于业务来说使用起来也是不方便的,比如这个client提供了很多复杂的接口,而业务使用的只是其中的一个子集,并且业务可能还需要加入鉴权限流等逻辑,于是需要把外部的inter原创 2020-10-21 14:55:14 · 102 阅读 · 1 评论 -
系统的非功能需求
Qualities—that is non-functional requirements—can be divided into two main categories:1, Execution qualities, such as safety, security and usability, which are observable during operation (at run time).2,Evolution qualities, such as testability, maintain原创 2020-09-29 15:55:16 · 2318 阅读 · 0 评论 -
架构设计步骤
1,架构分析,包括功能和肺功能分析2,架构生成3,架构评估4,架构演化以上几步可循环迭代wikipedia解释概念震动很强https://en.wikipedia.org/wiki/Software_architecture原创 2020-09-28 12:51:00 · 146 阅读 · 0 评论 -
缓存算法
lru最近最少使用,这个使用得最多,hash+双向list可以实现O(1)的时间复杂度lfu由于要记录缓存项的访问次数,所以需要在每个缓存项添加一个score值,用于记录访问频率,对应这个数据的就是redis的zset,redis是采用skiplist实现的。如果需要自己实现,可以使用min-heap+hash,时间复杂度为O(logn)TwoQueueCacheTwoQueueCache tracks frequently used and recently used entries separ原创 2020-08-06 10:42:54 · 182 阅读 · 0 评论 -
业务分层架构
架构图usernginxlogic_gatewaylogic_middlelogic_basic_readdb/cachehttp requesthttp requestrpcrpctcpusernginxlogic_gatewaylogic_middlelogic_basic_readdb/cache流程说明io分离处理流程分为逻辑处理和数据读取,逻辑层的进程是无状态的,可以水平扩容的。所有关于产品的逻辑都是在这里实现。io层负责数据的读写,包括数据持久化,一致性事务,数据缓存,缓存又分为red原创 2020-07-26 22:27:14 · 907 阅读 · 0 评论