架构设计系列
文章平均质量分 90
微信搜一搜【Java半颗糖】微信公众号,一起学习更多技术,每天进步一点点。
试剑江湖。
做你没做过的事叫成长,做你不愿意做的事叫改变,做你不敢做的事叫突破。
展开
-
【架构设计】如何设计一个高性能短链系统
所谓系统设计,就是给一个场景,让你给出对应的架构设计,需要考虑哪些问题,采用什么方案解决。很多面试官喜欢出这么一道题来考验你的知识广度和逻辑思考能力。原创 2023-08-08 23:33:31 · 802 阅读 · 0 评论 -
【架构设计】系统重构
代码质量一言难尽,改个需求或做维护经常加班,让你恨不得推翻重写;架构混乱,模块之间职责不明,一个需求需要修改四五个服务;CI/CD 运转不畅,经常莫名其妙地挂掉,每次升级、上线都一拖再拖;团队结构不稳定,人员变动频繁;大家都在拼命开发新需求,没人关心技术债;如果以上问题你都自信满满,那我就要拿出杀手锏了。你的代码有测试吗?你平时开发新需求时会写测试吗?你在修改 bug 时会补测试吗?经过这样的灵魂三问,你还有自信坚持说自己的系统不是遗留系统吗?原创 2022-09-14 00:06:14 · 1539 阅读 · 0 评论 -
【架构设计】服务之间的调用为啥不直接用 HTTP 而用 RPC?
RPC 只是一种概念、一种设计,就是为了解决不同服务之间的调用问题, 它一般会包含有传输协议和序列化协议这两个。实现 RPC 的可以传输协议可以直接建立在 TCP 之上,也可以建立在 HTTP 协议之上。大部分 RPC 框架都是使用的 TCP 连接(gRPC使用了HTTP2)。...转载 2021-02-23 15:44:59 · 2542 阅读 · 1 评论 -
【架构设计】爬虫技术选型
以下为题主推荐一些在国内平台和 Github 上都可以找到的 Java 爬虫项目,希望能够帮助到题主和对此感兴趣的朋友。1、项目名称:爬虫框架 webmagic项目简介:webmagic 是一个开源的 Java 垂直爬虫框架,目标是简化爬虫的开发流程,让开发者专注于逻辑功能的开发。webmagic 的核心非常简单,但是覆盖爬虫的整个流程,也是很好的学习爬虫开发的材料。码云项目地址:https://gitee.com/flashsword20/webmagic GitHub 地址:https.原创 2021-01-03 23:37:33 · 630 阅读 · 0 评论 -
【架构设计】服务治理理论(一)
1. 前言微服务架构下,会引入很多服务问题,所以少不了需要做服务治理,包括:服务注册与发现、服务配置、服务限流、服务熔断、服务降级、负载均衡、链路追踪等。关于服务治理的范畴应该包括哪些,业界其实也没有形成标准,但至少包括了前面列出来的内容,这是毋庸置疑的。另外,微服务架构下,服务集群规模会越来越大,服务治理也很难靠人工完成,因此,微服务治理的自动化程序要高。下面,我们就根据上面列举的内容,一一讲解每一块的服务治理如何实践。2. 服务注册与发现在第一篇文章最后我们也有讲到注册中心,从 CA转载 2021-03-11 11:17:15 · 475 阅读 · 0 评论 -
【架构设计】分布式缓存
高并发环境下这个时候如果访问不加拦截,让大量的读写请求涌向数据库,由于磁盘的处理速度与内存显然不在一个量级,服务器马上就要宕机。从减轻数据库的压力和提高系统响应速度两个角度来考虑,都会在数据库之前加一层缓存,访问压力越大的,在缓存之前就开始CDN拦截图片等访问请求。转载 2021-02-23 15:17:40 · 186 阅读 · 0 评论 -
【架构设计】分布式链路追踪理论(一)
随着应用容器化和微服务的兴起,借由 Docker 和 Kubernetes 等工具,服务的快速开发和部署成为可能,构建微服务应用变得越来越简单。但是随着大型单体应用拆分为微服务,服务之间的依赖和调用变得极为复杂,这些服务可能是不同团队开发的,可能基于不同的语言,微服务之间可能是利用 RPC、RESTful API,也可能是通过消息队列实现调用或通讯。如何理清服务依赖调用关系、如何在这样的环境下快速 debug、追踪服务处理耗时、查找服务性能瓶颈、合理对服务的容量评估都变成一个棘手的事情。转载 2021-02-22 22:41:11 · 421 阅读 · 0 评论 -
【架构设计】一致性协议算法
1. 前言在常见的分布式系统中,总会发生诸如机器宕机或网络异常(包括消息的延迟、丢失、重复、乱序,还有网络分区)等情况。一致性算法需要解决的问题就是如何在一个可能发生上述异常的分布式系统中,快速且正确地在集群内部对某个数据的值达成一致,并且保证不论发生以上任何异常,都不会破坏整个系统的一致性。2. CAP定理CAP 理论告诉我们,一个分布式系统不可能同时满足一致性(C:Consistency),可用性(A: Availability)和分区容错性(P:Partition tolerance)转载 2021-02-15 11:18:53 · 355 阅读 · 0 评论 -
【架构设计】分布式事务概述
2pc 3pc tcc 本地消息表 可靠消息服务 最大努力通知 saga seata原创 2021-02-03 23:36:28 · 369 阅读 · 0 评论 -
【架构设计】一致性HASH算法在分布式场景实践
普通的哈希算法使用取余操作:hash(o) %n,其中 n 代表机器的数量。如果在集群中新增加一个节点时,计算公式会变为:hash(o) %(n+1);在集群中删除一个机器时,计算公式变为:hash(o) % (n-1)。所以当集群中机器数量有所变化时,几乎所有的 Object 的哈希值都会改变。一致性哈希可以保证当从集群中删除一台机器时,仅仅保存在该机器上的 Object 的值会变化;当集群中增加一台机器时,也仅仅是非常小的一部分 Object 的哈希值会发生改变。转载 2021-01-17 22:09:58 · 130 阅读 · 2 评论 -
【架构设计】CND实时日志分析
整体架构通过对 CDN 访问日志(标准直播 LVB、云点播 VOD、内容分发网络 CDN)的实时采集与推送,实现对日志数据的快速分析与检索。方案优势及效果一站式接入,方便快捷,控制台直接使用,帮助企业更聚焦业务,无需再开发日志系统,即可实现 CDN 访问日志的分析与检索 基于大数据分析处理平台分布式存储系统,能全量、实时获取 CDN 访问日志,可以快速查询每一条请求日志。 全量日志自动采集,字段丰富,支持多维度分析,深度数据挖掘。 接入日志服务(CLS),可以直接使用 CLS 的检索功转载 2021-01-04 22:35:30 · 331 阅读 · 1 评论 -
【架构设计】谈谈你对CDN 的理解
一、CDN 是什么?随着互联网的发展,用户在使用网络时对网站的浏览速度和效果愈加重视,但由于网民数量激增,网络访问路径过长,从而使用户的访问质量受到严重影响。特别是当用户与网站之间的链路被突发的大流量数据拥塞时,对于异地互联网用户急速增加的地区来说,访问质量不良更是一个急待解决的问题。如何才能让各地的用户都能够进行高质量的访问,并尽量减少由此而产生的费用和网站管理压力呢?内容发布网络(Content Delivery Network,CDN)诞生了。CDN是指一种通过互联网互相连接的电脑网络系统,利转载 2021-01-04 22:18:20 · 565 阅读 · 0 评论 -
【架构设计】分库分表
一、分库分表—扩容分库、分表、垂直拆分和水平拆分 分库:因一个数据库支持的最高并发访问数是有限的,可以将一个数据库的数据拆分到多个库中,来增加最高并发访问数。 分表:因一张表的数据量太大,用索引来查询数据都搞不定了,所以可以将一张表的数据拆分到多张表,查询时,只用查拆分后的某一张表,SQL 语句的查询性能得到提升。 分库分表优势:分库分表后,承受的并发增加了多倍;磁盘使用率大大降低;单表数据量减少,SQL 执行效率明显提升。 水平拆分:把一个表的数据拆分到多个数据库,每个数据库中的表...原创 2020-10-04 02:14:11 · 600 阅读 · 0 评论 -
【架构设计】分布式缓存
在高频访问数据库的场景中,我们会在业务层和数据层之间加入一套缓存机制,来分担数据库的访问压力,毕竟访问磁盘 I/O 的速度是很慢的。比如利用缓存来查数据,可能5ms就能搞定,而去查数据库可能需要 50 ms,差了一个数量级。而在高并发的情况下,数据库还有可能对数据进行加锁,导致访问数据库的速度更慢。分布式缓存我们用的最多的就是 Redis了,它可以提供分布式缓存服务。一、Redis 缓存1.1. Redis 数据丢失哨兵机制Redis 可以实现利用哨兵机制实现集群的高可用。那什么十哨兵.原创 2020-10-04 01:58:26 · 162 阅读 · 0 评论 -
【架构设计】分布式消息队列
常见问题消息积压[ LRU、TTL、死信队列(表)] 消息丢失[开启事务、持久化、Ack手动确认] 消息重复消费原创 2020-09-21 21:18:26 · 219 阅读 · 0 评论 -
【架构设计】单点登录SSO设计与实现
SSO( Single Sign-On ),中文意即单点登录,单点登录是一种控制多个相关但彼此独立的系统的访问权限,拥有这一权限的用户可以使用单一的ID和密码访问某个或多个系统从而避免使用不同的用户名或密码,或者通过某种配置无缝地登录每个系统。SSO的一种较为通俗的定义是:SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。它是目前比较流行的企业业务整合的解决方案之一。...转载 2020-09-20 10:40:33 · 994 阅读 · 0 评论 -
【架构设计】谈谈怎么做服务隔离
引言OK,如下图所示那显而易见,做服务隔离的目的就是避免服务之间相互影响。毕竟谁也不能说自己的微服务百分百可用,如果不做隔离,一旦一个服务出现了问题,整个系统的稳定性都会受到影响! 因此,做服务隔离是很有必要的。那么怎么隔离呢?有如下两种方式 - 按*种类隔离* - 按*用户隔离*OK,接下来开始细说这两种方式!正文种类隔离其实按照服务种类隔离要从两个纬度来说:即服务提供方和服务调用方! 假设我们一个系统有三个服务:订单...转载 2020-09-20 10:24:39 · 407 阅读 · 0 评论 -
【架构设计】SaaS多租户数据隔离的三种方案
另附一片论文,关于SaaS和多租户下的数据存储与扩容:http://www.360doc.com/document/12/0823/16/10636892_231933452.shtml一、多租户在数据存储上存在三种主要的方案,分别是:1. 独立数据库这是第一种方案,即一个租户一个数据库,这种方案的用户数据隔离级别最高,安全性最好,但成本较高。 优点: 为不同的租户提供独立的数据库,有助于简化数据模型的扩展设计,满足不同租户的独特需求;如果出现故障,恢复数据比较简单。 缺点:转载 2020-09-20 10:06:59 · 1719 阅读 · 0 评论 -
【架构设计】RBAC权限系统分析、设计与实现
转载请备注来源:《RBAC权限系统分析、设计与实现》|shuwoom.com最近,因为项目上需要设计实现一个权限管理模块,所以专门整理总结了RBAC的一些知识。目前,使用最普遍的权限管理模型正是RBAC(Role-Based Access Control)模型,这篇文章也主要是介绍基于RBAC的权限管理系统,我会从RBAC是什么、如何设计RBAC两部分来介绍。一、RBAC是什么1、RBAC模型概述RBAC模型(Role-Based Access Control:基于角色的访问控制)...转载 2020-09-20 09:58:45 · 907 阅读 · 0 评论 -
【架构设计】Redis 分布式锁
分布式锁实现:redis、zookeeper、redLock、redission等常见问题:锁超时(保证原子性),可重入(ThreadLocal+引用计数)原创 2020-09-19 12:21:32 · 654 阅读 · 0 评论 -
【架构设计】分布式Session一致性
一、session的概念1.1 什么是session?服务器为每个用户创建一个会话,存储用户的相关信息,以便多次请求能够定位到同一个上下文。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。Web开发中,web-server可以自动为同一个浏览器的访问用户自动转载 2020-09-14 08:55:45 · 256 阅读 · 0 评论 -
【架构设计】秒杀系统设计
秒杀系统总体架构 一、秒杀常见问题1.1 高并发相关文章秒杀是怎么设计的?转载 2020-09-02 22:43:30 · 426 阅读 · 0 评论 -
【架构设计】名词解释(PM、PD、UE、UI、RD....)
PM:产品经理擅长:PPT和高层确认战略。project。 PD:产品设计师,也可能叫产品规划师、需求分析师。擅长:word写文档 。Visio、Axure(基于网站构架图的带注释页面示意图、操作流程图、以及交互设计,并可自动生成用于演示的网页文件和规格文件,以提供演示与开发)原型设计工具QA:Qualtiy Assurance,品质保证。QA的主要职责就是质量保证工作。UE:User Experience 用户体验,可能称作交互设计师、界面设计师。擅长:Dreamweaver做网页UI...翻译 2020-08-10 08:33:42 · 3391 阅读 · 0 评论 -
【架构设计】从业务场景出发,从事开发工作
站在巨人的肩膀上,可以走的又快又稳定原创 2020-08-07 15:15:51 · 298 阅读 · 0 评论 -
【架构设计】Base理论与CAP定理
一、什么是CAP定理? CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。 CAP原则是NOSQL数据库的基石。 分布式系统的CAP理论:理论首先把分布式系统中的三个特性进行了如下归纳:一致性(C)在...原创 2020-04-22 00:30:08 · 212 阅读 · 0 评论 -
【架构设计】LVS+KeepAlived+Nginx高可用实现方案
一、LVS、KeepAlived、Nginx是什么?原创 2020-03-10 14:51:21 · 584 阅读 · 0 评论 -
【架构设计】延迟队列还能这么玩?
昨天叫外卖的时候,发现一个很奇怪的现象,就是在我下完单之后,没有及时付款,结果过了15分钟后,收到短信说,我的订单已取消!可能有些人不以为意,但是天真无邪我真想知道这背后是谁在捣鬼,所以恶补了一番,才知道这就是延迟队列。其实在我们日常生活中很多类似的场景,尤其在电商类平台:下订单成功后,在30分钟内没有支付,自动取消订单 用户多少天未登录给用户做召回推送短信 外卖平台发送订餐通知,下单成功后60s给用户推送短信 淘宝新建商户一个月内还没上传商品信息,将冻结商铺等1. 什么是延迟队列.原创 2020-12-29 13:24:22 · 215 阅读 · 0 评论