
架构
文章平均质量分 90
架构攻城之路
敢拒绝,还有梦。
有qian,有闲,有成长;
有你,也有我。
展开
-
为什么说 TCP 协议是可靠的?
TCP 协议是 TCP/IP 协议栈中的传输层的协议,TCP协议又叫传输控制协议(Transport Control Protocal)。众所周知,它是一个可靠协议。因为它能保证接收端完整地接受到发送端发送的数据包,即保证不丢包。转载 2022-09-15 15:46:41 · 5963 阅读 · 0 评论 -
搞懂异地多活,看这篇就够了
阅读本文大约需要 20 分钟。本文由公众号“水滴与银弹”号主Kaito原创分享。你好,我是 Kaito。在软件开发领域,「异地多活」是分布式系统架构设计的一座高峰,很多人经常听过它,但很少人理解其中的原理。异地多活到底是什么?为什么需要异地多活?它到底解决了什么问题?究竟是怎么解决的?这些疑问,想必是每个程序看到异地多活这个名词时,都想要搞明白的问题。有幸,我曾经深度参与过一个中等互联网公司,建设异地多活系统的设计与实施过程。所以今天,我就来和你聊一聊异地多活背后的的实现原理。.转载 2022-03-02 16:21:15 · 669 阅读 · 0 评论 -
结合电商支付业务一文搞懂 DDD
2004 年,软件大师 Eric Evans 的不朽著作《领域驱动设计:软件核心复杂性应对之道》面世,从书名可以看出,这是一本应对软件系统越来越复杂的方法论的图书。然而,在当时,中国的软件业才刚刚起步,软件系统还没有那么复杂,即使维护了几年,软件退化了,不好维护了,推倒重新开发就好了。因此,在过去的那么多年里,真正运用领域驱动设计开发(DDD)的团队并不多。一套优秀的方法论,因为现实阶.转载 2022-01-19 17:36:49 · 1300 阅读 · 0 评论 -
浅谈我对DDD领域驱动设计的理解
从遇到问题开始当人们要做一个软件系统时,一般总是因为遇到了什么问题,然后希望通过一个软件系统来解决。比如,我是一家企业,然后我觉得我现在线下销售自己的产品还不够,我希望能够在线上也能销售自己的产品。所以,自然而然就想到要做一个普通电商系统,用于实现在线销售自己企业产品的目的。再比如,我是一家互联网公司,公司有很多系统对外提供服务,面向很多客户端设备。但是最近由于各种原因,导致服务经常出故障。所以,我们希望通过各种措施提高服务的质量和稳定性。其中的一个措施就是希望能做一个灰度发布的平台,这个平台可转载 2022-01-19 16:32:50 · 448 阅读 · 0 评论 -
LRU缓存机制的原理与实现
运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。 写入数据 put(key, value) - 如果密钥不存在,则写入其数据值。当缓存容量达到上限时,它应该在写入新数据之前删除最近最少使用的数据值,从而为新的数据值留出空间。你是否可以在 O(1) 时间复杂度内完成这两种操作?实例:LRUCac转载 2021-05-10 15:18:25 · 401 阅读 · 0 评论 -
面试官突然的关心-日志篇 SLF4J
当面试官问到,你们用的什么日志框架,log4j 和logback吗?和slf4j什么区别?吓尿了,日志系统也关心,学起来!前言日志重要吗?程序猿排查问题,数据统计分析、故障定位都依赖日志,甚至有的公司直接用日志的输出,经过统计做业务系统的输入。所以日志实在太重要了,大家几乎每天都在用日志,那都知道用的是什么日志框架,以及实现的原理吗?开胃菜说Log4j 和 Logback 之前,不得不提SLF4J。简单说,SLF4J相当于定义了接口,Log4j 和 Logback是具体实现。SL.转载 2021-04-23 11:07:13 · 371 阅读 · 0 评论 -
一文读懂分布式任务调度平台XXL-JOB
本文主要介绍分布式任务调度平台XXL-JOB(v2.1.0版本),包括功能特性、实现原理、优缺点、同类框架比较等基本介绍项目开发中,常常以下场景需要分布式任务调度:同一服务多个实例的任务存在互斥时,需要统一协调 定时任务的执行需要支持高可用、监控运维、故障告警 需要统一管理和追踪各个服务节点定时任务的运行情况,以及任务属性信息,例如任务所属服务、所属责任人因此,XXL-JOB应运而生:XXL-JOB是一个开源的轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展、转载 2021-04-20 18:26:12 · 1204 阅读 · 0 评论 -
ElasticJob 的产品定位与新版本设计理念
导读:调度(Scheduling)在计算机领域是个庞大概念,CPU 调度、内存调度、进程调度等都可称之为调度。它是指在特定的时机分配合理的资源去处理预先确定的任务,用于在适当的时机触发一个包含业务逻辑的应用。调度无论在单机还是分布式环境中都是很重要的课题。在单机环境,调度与底层操作系统脱离不了干系;而在分布式环境中,调度直接决定运行集群的投入和产出。调度的两个核心要素是资源治理和触发时机。背景ElasticJob 诞生于 2015 年,当时业界虽然有 QuartZ 等出类拔萃的定时任...转载 2021-04-20 17:55:21 · 213 阅读 · 0 评论 -
传统架构 vs 云原生架构,谈谈为什么我们需要云原生架构?
云原生架构是什么回顾过去十年,数字化转型驱动着技术创新和商业元素的不断融合和重构,可以说,现在已经不是由商业模式决定采用何种技术架构,而是由技术架构决定企业的商业模式。所以无论是行业巨头还是中小微企业都面临着数字化转型带来的未知机遇和挑战。机遇是商业模式的创新,挑战来自对整体技术架构的变革。新一代的技术架构是什么?如何变革?是很多互联网企业面临的问题。而云原生架构则是这个问题最好的答案,因为云原生架构对云计算服务方式与互联网架构进行整体性升级,深刻改变着整个商业世界的 IT 根基。...转载 2021-04-13 10:21:36 · 1034 阅读 · 0 评论 -
APP多版本共存,服务端如何兼容?
做过APP产品的技术人员都知道,APP应用属于一种C/S架构的,所以在做多版本兼容,升级等处理则比较麻烦,不像web应用那么容易。下面将带大家分析几种常见的情况和应对方式:小改动或者新加功能的这种情况,数据库结构和API程序一般是可以兼容多版本的,所以不用强制升级,可以坐到多版本共存。尽量采用数据库层面新增字段和API的方式,应用程序层面就可以兼容了。当然,API层面也可以部署多个版本来同时提供,但这个不是必须的但最重要的是数据库层面的表结构那些能够兼容到。或者:总结:数据库层...转载 2020-10-31 16:37:22 · 1916 阅读 · 0 评论 -
分布式ID生成方案总结
ID是数据的唯一标识,传统的做法是利用UUID和数据库的自增ID,在互联网企业中,大部分公司使用的都是Mysql,并且因为需要事务支持,所以通常会使用Innodb存储引擎,UUID太长以及无序,所以并不适合在Innodb中来作为主键,自增ID比较合适,但是随着公司的业务发展,数据量将越来越大,需要对数据进行分表,而分表后,每个表中的数据都会按自己的节奏进行自增,很有可能出现ID冲突。这时就需要一个单独的机制来负责生成唯一ID,生成出来的ID也可以叫做分布式ID,或全局ID。下面来分析各个生成分布式ID的机制转载 2020-11-06 09:39:47 · 736 阅读 · 0 评论 -
高并发下,如何解决接口幂等性?常用解决方案必知必会
一、背景我们实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果。例如: 前端重复提交选中的数据,应该后台只产生对应这个数据的一个反应结果。 我们发起一笔付款请求,应该只扣用户账户一次钱,当遇到网络重发或系统bug重发,也应该只扣一次钱; 发送消息,也应该只发一次,同样的短信发给用户,用户会哭的; 创建业务订单,一次业务请...转载 2020-01-08 11:41:10 · 469 阅读 · 0 评论 -
为什么微服务一定要有网关?
一、什么是服务网关服务网关 = 路由转发 + 过滤器1、路由转发:接收一切外界请求,转发到后端的微服务上去;2、过滤器:在服务网关中可以完成一系列的横切功能,例如权限校验、限流以及监控等,这些都可以通过过滤器完成(其实路由转发也是通过过滤器实现的)。二、为什么需要服务网关上述所说的横切功能(以权限校验为例)可以写在三个位置:每个服务自己实现一遍 写到一个公共的服务中...转载 2019-12-17 12:00:40 · 426 阅读 · 0 评论 -
用户认证:基于jwt和session的区别和优缺点
背景知识:Authentication和Authorization的区别:Authentication:用户认证,指的是验证用户的身份,例如你希望以小A的身份登录,那么应用程序需要通过用户名和密码确认你真的是小A。Authorization:授权,指的是确认你的身份之后提供给你权限,例如用户小A可以修改数据,而用户小B只能阅读数据。由于http协议是无状态的,每一次请求都无状态。当...转载 2019-12-27 09:36:03 · 1108 阅读 · 0 评论 -
面试问你,分布式与集群的区别,你真的了解?
作者:至尊宝cnblogs.com/aspirant/p/5697807.html在IDF05(Intel Developer Forum 2005)上,Intel首席执行官Craig Barrett就取消4GHz芯片计划一事,半开玩笑当众单膝下跪致歉,给广大软件开发者一个明显的信号,单纯依靠垂直提升硬件性能来提高系统性能的时代已结束,分布式开发的时代实际上早已悄悄地成为了时代的主流。...转载 2020-01-07 16:37:58 · 420 阅读 · 0 评论