随笔分类 - [20]DesignAnalysis设计分析
-
业务快速增长时的容量问题定制化数据库
摘要:定制化数据库 架构思考-业务快速增长时的容量问题 背景 之前做过一个项目,数据库存储采用的是mysql。当时面临着业务指数级的增长,存储容量不足。当时采用的措施是 1>短期解决容量的问题 mysql从5.6升级5.7,因为数据核心且重要,数据库主从同步采用的是全同步, 利用5.7并行复制新特性,减少 阅读全文
-
接口幂等性的实现方式
摘要:接口幂等性如何实现? 导读 转载自幂等性如何实现?深入了解一波!!! 现在这个时代大家可能最关心的就是钱了,那么有没有想过你银行转账给你没有一次是转多的,要么失败,要么成功,为什么不能失误一下多转一笔呢?醒醒吧年轻人,别做梦了,做银行的能那么傻x吗? 今天我们就来谈一谈为什么银行转账不能多给我转一笔 阅读全文
-
接口限流
摘要:接口限流看这一篇就够了!!! 导读 前几天和一个朋友讨论了他们公司的系统问题,传统的单体应用,集群部署,他说近期服务的并发量可能会出现瞬时增加的风险,虽然部署了集群,但是通过压测后发现请求延迟仍然是很大,想问问我有什么改进的地方。我沉思了一会,现在去改架构显然是不可能的,于是我给出了一个建议,让他去 阅读全文
-
大数据量下查询显示优化
摘要:大数据量下查询显示优化方案小结 最近工作中,遇到了优化大批量数据查询和显示的问题,数据量在10W级别。经过反复设计和讨论,最终得到优化到了较为满意的效果,在此记录小结下,在解决此类问题中的思考。 问题背景说明 通常情况下,用户查询数据量不超过1千条,但有几个大户,通过某种方式,生成了上万级别的数据, 阅读全文
-
增加复杂度的12危险信号
摘要:软件设计的哲学:增加复杂度的12中危险信号 软件系统的设计和开发过程中,增加系统复杂性的12中危险信号: 危险信号1:浅层模块 浅层模块的接口相对于它提供的功能来说是复杂的。浅层模块在与复杂性的斗争中帮助不大,因为它们提供的好处(不需要了解它们内部如何工作)被学习和使用它们的接口的成本所抵消。小模块 阅读全文
-
聚合
摘要:如何运用领域驱动设计 - 聚合 目录 概述 何为聚合 演化案例 发现实体关系 开始划分边界吧 选取一个聚合根 通过聚合根保护你的内部对象 聚合的一些特性 通过ID引用 聚合真的是不变的吗 小的聚合 一致性 总结 概述 在前几篇的博文中,我们已经学习到了如何运用实体和值对象。随着我们所在领域的不断深入 阅读全文
-
接口幂等性
摘要:接口幂等性的解决方案 在编程中,幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数指的是那些使用相同参数重复执行也能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。比如说getIdCard()函数和setTrue()函数就是幂等函数。 幂等在 阅读全文
-
缓存雪崩 Cache Avalanche 缓存穿透 Cache Penetration 缓存击穿 Hotspot Invalid
摘要:缓存雪崩 Cache Avalanche 缓存穿透 Cache Penetration 缓存击穿 Hotspot Invalid 浅谈缓存系统的三个问题 一.无处不在的缓存缓存在计算机系统是无处不在,在CPU层面有L1-L3的Cache,在Linux中有TLB加速虚拟地址和物理地址的转换,在应用层有 阅读全文
-
千万级用户网站门户
摘要:千万级用户网站门户前端设计 对于千万级的注册用户的门户项目是前端这块是怎么去实现的,自己在平常的工作中总结了一些经验,也是在不断的挫折中,不断演练的,希望总结出来给大家参考下,和大家一起探讨,一起进步。 一、门户设计一般会遇到哪些难点 (一)、首页打开时间太慢了 在开发一个门户到生产上线后,首页响应 阅读全文
-
问题的根源:状态
摘要:问题的根源:状态 “在分布式环境下,超过一个线程同时对同一个状态进行访问和变更所导致的一致性问题和可用性问题” 问题的根源:状态 我无法给出一个百分比数据用以说明到底有多少后端应用程序在使用数据库,但我想国内涉及到增删查改之类的各种“管理系统”应该不在少数。 说到底,增删改查是落地,而怎么落地则取决 阅读全文
-
分布式一致性协议理论
摘要:分布式一致性协议 介绍常见的分布式一致性协议 一.CAP/BASE 1. CAP理论 CAP理论又称之为布鲁尔定理(Brewer’S theorem),认为在设计一个大规模可扩放的网络服务时候不能同时兼容:一致性(consistency)、可用性(Availability)、分区容错(Partiti 阅读全文
-
生成唯一且随机的千万级订单号
摘要:采用redis生成唯一且随机的订单号 https://www.cnblogs.com/yalunwang/p/11592194.html 项目描述 最近做的一个项目有这么一个需求:需要生成一个唯一的11位的就餐码(类似于订单号的概念),就餐码的规则是:一共是11位的数字,前面6位是日期比如2019年 阅读全文
-
第三方系统登录
摘要:以下业务场景只针对于Web系统,而且Web页面有后台服务程序的场景。 开端 那一年,我所在公司的用户量达到了公司成立以来的新高峰,经过多个程序员日日夜夜加班,每个业务系统达到了几乎四个9的稳定性,同时业务在业界也有了一定的知名度。那一天突然有一个合作商登门拜访,提出合作共赢的意向。业务的场景就是我们 阅读全文
-
微服务与网关
摘要:微服务与网关技术(SIA-GateWay) 一、背景 软件架构,总是在不断的演进中... 把时间退回到二十年之前,当时企业级领域研发主要推崇的还是C/S模式,PB、Delphi这样的开发软件是企业应用开发的主流。随着时间的推移,基于浏览器的B/S架构开始渐渐流行了起来。初期,Web开发ASP还占据了 阅读全文
-
缓存雪崩与缓存穿透
摘要:缓存雪崩与缓存穿透 今天来分享一下Redis几道常见的面试题: 如何解决缓存雪崩? 如何解决缓存穿透? 如何保证缓存与数据库双写时一致的问题? 一、缓存雪崩 1.1 什么是缓存雪崩? 首先我们先来回答一下我们为什么要用缓存(Redis): 1、提高性能能:缓存查询是纯内存访问,而硬盘是磁盘访问,因此 阅读全文
-
Eventbus的功能
摘要:Eventbus的功能 http://masstransit-project.com/ MassTransit is a free, open source, lightweight message bus for creating distributed applications using th 阅读全文
-
Actor模型的状态(State)+行为(Behavior)+邮箱(Mailbox)
摘要:状态(State)+行为(Behavior)+邮箱(Mailbox) 基于Actor模型的CQRS、ES解决方案分享 大家晚上好,我是郑承良,跟大家分享的话题是《基于Actor模型的CQRS/ES解决方案分享》,最近一段时间我一直是这个话题的学习者、追随者,这个话题目前生产环境落地的资料少一些,分享 阅读全文
-
CQRS项目
摘要:CQRS+ES项目解析-Diary.CQRS 在《当我们在讨论CQRS时,我们在讨论些神马》中,我们讨论了当使用CQRS的过程中,需要关心的一些问题。其中与CQRS关联最为紧密的模式莫过于Event Sourcing了,CQRS与ES的结合,为我们构造高性能、可扩展系统提供了基本思路。本文将介绍Ka 阅读全文
-
DDD总览
摘要:DDD总览 领域驱动设计(DDD)编码实践 目录 写在前面DDD总览实现业务的3种常见方式基于业务的分包领域模型的门面——应用服务业务的载体——聚合根实体 vs 值对象聚合根的家——资源库创生之柱——工厂必要的妥协——领域服务Command对象DDD中的读操作总结 写在前面 Martin Fowle 阅读全文
-
慢查询
摘要:高并发系统之大忌-慢查询 最近又遇到了一次慢查把db(mariadb10)几乎打挂的案例,作为一个核心支付系统的技术负责人,真是每日如履薄冰。因为之前支付系统经常出问题,现在各个BG对支付系统都盯得很紧。这次要不是我及时让DB给暴力清理数据,没准又提一个P2故障; 抱怨归抱怨,事后复盘,一丝都不能马 阅读全文