随笔分类 -  架构

摘要:DDD能够帮我们设计出清晰的领域和应用边界 DDD 包括战略设计和战术设计两部分。战略设计主要从业务视角出发,建立业务领域模型,划分领域边界,建立通用语言的限界上下文,这些限界上下文可以作为微服务设计的参考边界。而战术设计则从技术视角出发,着重于领域模型的技术实现,包括聚合根、实体、值对象、领域服务 阅读全文
posted @ 2023-10-19 15:26 zenghansen 阅读(106) 评论(0) 推荐(0) 编辑
摘要:前言 直播业务现在特别火爆,也给人们的互动方式带来了很多新的改变,比如刷礼物、弹幕、排行榜等等。面对巨大的流量规模,直播技术的发展也备受关注。作为一个技术爱好者,相信你也会对直播的技术比较感兴趣,于是我去翻了几篇文章,了解了直播的技术方案,发现涉及到的技术细节太多,有部分已经是知识盲区,如音频、视频 阅读全文
posted @ 2023-10-17 15:07 zenghansen 阅读(80) 评论(0) 推荐(0) 编辑
摘要:首先先说一个大原则:分布式事务能不用就不要用,毕竟这个用起来还是有一些麻烦的。当然,不用和不会用可是两码事。 1. 分布式事务基础理论 学习分布式事务,有一些基础理论需要我们先来了解下。 1.1 本地事务 本地事务是指将多条语句作为一个整体进行操作的功能,通过数据库事务可以确保该事务范围内的所有操作 阅读全文
posted @ 2023-10-10 16:52 zenghansen 阅读(32) 评论(0) 推荐(0) 编辑
摘要:对于支付渠道方而已,同一个支付单号是不可以重复支付的,问题在于对于同一个订单,出于需求,比如不同的支付渠道,代付等,可能会存在不同的支付单号。 所以对于一个订单在未成功支付之前,都有可能存在同时调起支付的场景,因此,对于同一个订单,我们需要在发起支付之前做限制: 1.在收银台页面进行轮询,如果同时存 阅读全文
posted @ 2023-07-13 15:11 zenghansen 阅读(224) 评论(0) 推荐(0) 编辑
摘要:需求场景: 一些异步的作业,比如订单信息同步,消息通知等,我们一般都是通过事件触发,然后先保存在队列里面,异步消费的方式去执行。 这个同步的技术需要保障两个点: 1、事件触发稳定性 2、事件消费的稳定性 我们先来聊第一个点: 要保证事件触发稳定,需要满足2个点,触发数据丢失可补偿,事件及时性,那么我 阅读全文
posted @ 2021-06-29 17:16 zenghansen 阅读(599) 评论(0) 推荐(0) 编辑
摘要:之所以说是暴力鉴权,是因为实现的方式简单粗暴。下面详细: 场景: 原有的一个旧管理系统,需要对接统一登录和权限认证中心。 做法: 1、去掉旧系统的登录限制代码,登录改成统一认证的接口去登录。并返回token 2、获取权限的菜单,用以展示权限模块,并进入到管理系统里面页 3、每次请求,都转发旧管理系统 阅读全文
posted @ 2021-05-12 11:05 zenghansen 阅读(139) 评论(0) 推荐(0) 编辑
摘要:需求分析: 1、用户中台赋能各大应用,统一接管登录注册,验证用户账号密码。原有的应用用户体系内部逻辑不变。 2、兼容app端,H5端及app混合H5端,无缝连接。 设计思路: 用户中台只负责认证账号密码,并下发ticket凭证。 应用收到ticket后,自主维护本应用的验证体系gw-token以及有 阅读全文
posted @ 2021-04-01 17:53 zenghansen 阅读(1099) 评论(0) 推荐(0) 编辑
摘要:前言 首先回顾微服务的基本组成: 生产者:提供服务 消费者:消费服务 服务注册/发现中心:服务注册,发现,监控 所以,springcloud微服务的架构基础 :生产者(client),消费者(client),服务注册/发现中心(server) 项目git地址 https://github.com/z 阅读全文
posted @ 2020-03-26 19:49 zenghansen 阅读(1205) 评论(0) 推荐(0) 编辑
摘要:首先搭建zookeeper集群docker-compose.yml version: '2' networks: zk: services: zk1: image: zookeeper:3.4 container_name: zk1 networks: - zk ports: - "21811:21 阅读全文
posted @ 2020-03-18 20:54 zenghansen 阅读(210) 评论(0) 推荐(0) 编辑
摘要:在实际的开发场景中,我们可能会遇到不同客户端需要互斥地访问某个共享资源,也就是同一时刻只允许一个客户端操作这个共享资源,为了达到这个目的,一般会采用分布式锁来解决,目前流行的分布式锁实现方式有数据库、Memcached、Redis、文件系统、ZooKeeper,因Redis高性能、部署简单被广泛采用 阅读全文
posted @ 2020-03-09 20:41 zenghansen 阅读(701) 评论(0) 推荐(0) 编辑
摘要:背景:由于地址库的变更,导致历史的用户地址与现用的地址库不对应,比如code变动,归属变动,增删等。 解决思路:如果是地址库存在于mysql里面,数据格式如下: 用户地址表: 地址库表: 则用sql可以查询到异常的地址: SELECT addr_id,ua FROM ( SELECT substri 阅读全文
posted @ 2020-03-09 17:04 zenghansen 阅读(267) 评论(0) 推荐(0) 编辑
摘要:以优惠券为例 优惠券按照用户uid分表 同时保存异构表,按照优惠券id分表 一般来说实现异构数据的方案:binlog+mq来实现 阅读全文
posted @ 2019-10-11 16:58 zenghansen 阅读(814) 评论(0) 推荐(0) 编辑
摘要:兼容程序到5.7,带有保留字的的sql加上``标准化 此处的正则 阅读全文
posted @ 2018-07-02 17:40 zenghansen 阅读(136) 评论(0) 推荐(0) 编辑
摘要:概述 业务服务器30+ 1、根据业务不同,有四个主入口,负责负载均衡。 2、主要是业务分离,防止宕机影响所有业务。 3、nginx反向代理,保证每个业务至少有两个服务。 redis集群12台 主要使用redis-cluster 视频集群100+ 主要用作回源以及加速cdn使用,以及作为cdn出事故的 阅读全文
posted @ 2017-09-25 10:11 zenghansen 阅读(297) 评论(0) 推荐(0) 编辑
摘要:以B站为例: 主域名:www.bilibili.com 账户登录注册相关域名,包括app登录:passport.bilibili.com 静态资源css,js,img等相关域名:static.bilibili.com 用户中心相关域名:space.bilibili.com webapi接口相关域名: 阅读全文
posted @ 2017-09-19 13:56 zenghansen 阅读(2185) 评论(0) 推荐(0) 编辑
摘要:写在前面 在日常应用里,经常会有动态和消息通知的推送功能,例如微信的朋友圈,微博的动态等。那么我们是如何实现这些高并发的业务需求呢。 此处,我们用一个案例来阐述一下推拉模式的基本原理。 业务场景 我们有个千万级的用户的私信系统,可以进行1v1的私信或者接受系统推送的私信。 优良方案 我们用推拉方式相 阅读全文
posted @ 2017-09-18 17:32 zenghansen 阅读(642) 评论(0) 推荐(0) 编辑
摘要:流程:1、用户发出交易请求,放到交易请求临时池里。2、矿工不断计算下一块区块的值,计算出来后,把交易临时池的单子放到区块来。3、其他矿工停止计算,验证计算出来区块,验证包括前一区块是否匹配,计算出来的区块的账单是否正确。4、如果其他矿工验证通过,则根据此区块继续计算下一区块。以此类推。备注:每个矿工 阅读全文
posted @ 2017-05-15 17:24 zenghansen 阅读(518) 评论(0) 推荐(0) 编辑
摘要:一、app与服务端交互确保来源的安全 作为一个移动互联网App,天生是需要和服务器通信的。那么,服务器如何识别客户端的身份?我们如何保证数据传输过程中的安全性?要靠两个东西:使用AppKey做身份识别,使用AppSecret校验数据。这两个东西的定义可以参考淘宝开放平台上这种比较严肃的说法:AppK 阅读全文
posted @ 2015-01-22 11:50 zenghansen 阅读(245) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示