![](https://img-blog.csdnimg.cn/20210823200429861.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
架构
文章平均质量分 87
架构
码上得天下
这个作者很懒,什么都没留下…
展开
-
CAS单点登录原理
至此,CAS登录的整个过程就完毕了,以后有时间总结下如何使用CAS,并运用到项目中。转载 2024-04-16 18:37:41 · 79 阅读 · 0 评论 -
Fury:一个基于JIT动态编译的高性能多语言原生序列化框架
下面是序列化用户自定义类型的一个示例,该类型里面包含多个基本类型以及嵌套类型的字段,在业务应用里面相当常见。需要注意自定义类型跨语言序列化之前需要调用registerAPI注册自定义类型,建立类型在不同语言之间的映射关系,同时保证GoLang等静态语言编译器编译代码时不裁剪掉这部分类型的符号。Java序列化示例Object f1;Object f1;String f2;Byte f5;Short f6;Integer f7;Long f8;Float f9;Double f10。转载 2024-02-26 19:44:09 · 227 阅读 · 0 评论 -
注册中心原理和选型:Zookeeper、Eureka、Nacos、Consul和Etcd
注册中心除了ETCD和Zookeeper,常用的还有Eureka、Nacos、Consul,下面我们就对这些常用的注册中心,初探它们的异同,便于后续技术选型。注册中心主要有三种角色:最后,RPC Client 从本地缓存的服务节点列表中,基于负载均衡算法选择一台 RPC Sever 发起调用。 根据注册中心原理的描述,注册中心必须实现以下功能,偷个懒,直接贴幅图:CAP理论是分布式架构中重要理论:关于 P 的理解,我觉得是在整个系统中某个部分,挂掉了,或者宕机了,并不影响整个系统的运作或者说使用,而可用性是转载 2024-02-26 17:23:41 · 247 阅读 · 0 评论 -
xxl-job将要过时,新一代更强大的分布式任务调度框架PowerJob
PowerJob是新一代分布式任务调度与计算框架,支持CRON、API、固定频率、固定延迟等调度策略,提供工作流来编排任务解决依赖关系,能让您轻松完成作业的调度与繁杂任务的分布式计算。转载 2024-02-26 12:12:12 · 134 阅读 · 0 评论 -
定时任务框架有哪些?xxl-job你了解多少?
从上图可以看出,转载 2024-02-26 11:06:04 · 107 阅读 · 0 评论 -
一致性哈希算法(consistent hashing)
在现实情境下,机器的数量一般都是固定的,所以我们只能将现有的物理节通过虚拟的方法复制多个出来,这些由实际节点虚拟复制而来的节点被称为。每个节点都只保存其后继节点信息,当发起查询时,节点首先在本地查找,如果没有则询问其后继节点,如果资源k的哈希值位于本节点和下一节点之间,则说明k存储在其后继节点上;在极端情况下,假如A节点出现故障,存储在A上的数据要全部转移到B上,大量的数据导可能会导致节点B的崩溃,之后A和B上所有的数据向节点C迁移,导致节点C也崩溃,由此导致整个集群宕机。转载 2023-10-27 09:42:47 · 227 阅读 · 0 评论 -
九种跨域方式实现原理(完整版)
前后端数据交互经常会碰到请求跨域,什么是跨域,以及有哪几种跨域方式,这是本文要探讨的内容。同源策略是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSRF等攻击。所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源。url的组成还可以阅读这篇文章:这是一篇由跨域问题引起的方案!Cookie、LocalStorage、IndexedDB 等存储性内容DOM 节点AJAX 请求发送后,结果被浏览器拦截了。转载 2023-10-19 11:41:31 · 314 阅读 · 0 评论 -
架构师在设计架构时通常遵循的一系列最佳实践和方法
8. 通信和集成:考虑不同系统之间的通信和集成,如使用RESTful API、消息队列或其他协议。13. 测试策略:制定全面的测试计划,包括单元测试、集成测试和用户验收测试,以确保软件质量。2. 模块化设计:将系统分解为小的、独立的模块,以便开发、测试和维护。6. 技术栈选择:选择适当的编程语言、框架和工具,考虑到项目需求和团队的熟练程度。1. 需求分析:仔细理解项目需求,与利益相关者合作,确保设计满足业务和技术需求。7. 数据模型设计:设计合适的数据结构和数据库架构,确保数据的一致性和完整性。转载 2023-10-12 19:39:17 · 97 阅读 · 0 评论 -
搞懂Seata分布式事务AT、TCC、SAGA、XA模式选型
Seata分布式事务AT、TCC、SAGA、XA模式选型主要是根据不同的业务进行相应的选型,如SAGA,需要调用第三方的支付的场景的时候,可以使用这个方案,SAGA是形成一定的事件流,反向的回滚的时候按照反向的事件流进行回滚。转载 2023-09-27 12:37:56 · 128 阅读 · 0 评论 -
常见的APM(Application Performance Management应用性能管理)
我也来对比下pinpoint和skyWalking 主流开源APM:Zipkin/Pinpoint/SkyWalking全面对比原创 2023-09-12 12:09:05 · 103 阅读 · 0 评论 -
Java动态追踪技术探究
通过日志框架、APM工具、Java代理技术和Profiler工具等,可以实现对方法调用、异常、性能等方面的动态追踪和分析,从而提高应用程序的可扩展性、性能和稳定性。3、Java代理技术:Java代理技术(如Java Agent和字节码增强)可以通过在应用程序启动时加载代理程序,对类进行增强或重定义,从而达到动态追踪的目的。Java动态追踪技术是指在Java应用程序运行过程中,通过监控和记录方法调用、异常、性能指标等信息,以便于分析和排查问题,优化性能,或进行安全审计等目的的技术手段。转载 2023-09-12 11:53:24 · 91 阅读 · 0 评论 -
Protobuf 有没有比 JSON 快 5 倍?
最后,我们把所有的战果汇总到一起。编解码数字的时候,JSON 仍然是非常慢的。Jsoniter把这个差距从 10 倍缩小到了 3 倍多一些。跳过非常长的字符串:和字符串长度线性相关。解码 double 字段:Protobuf 优势明显,是Jsoniter的 3.27 倍,是 Jackson 的 13.75 倍。编码 double 字段:如果不能接受只保留 6 位小数,Protobuf 是 Jackson 的 12.71 倍。如果接受精度损失,Protobuf 是Jsoniter的 1.96 倍。转载 2023-08-04 11:54:11 · 174 阅读 · 0 评论 -
什么是服务网格?在微服务体系中又是如何使用的?
服务网格这个概念出来很久了,从 2017 年被提出来,到 2018 年正式爆发,很多云厂商和互联网企业都在纷纷向服务网格靠拢。像蚂蚁集团、美团、百度、网易等一线互联网公司,都有服务网格的落地应用。转载 2023-07-24 17:24:48 · 127 阅读 · 0 评论 -
架构之软件负载均衡
1)Nginx 工作在网络的 7 层,所以它可以针对 http 应用本身来做分流策略,比如针对域名、目录结构等,相比之下 LVS 并不具备这样的功能,所以 Nginx 单凭这点可利用的场合就远多于LVS了;但 Nginx 有用的这些功能使其可调整度要高于 LVS,所以经常要去触碰触碰,触碰多了,人为出问题的 几率也就会大。2)Nginx 对网络稳定性的依赖较小,理论上只要 ping 得通,网页访问正常, Nginx就能连得通,这是 Nginx 的一大优势!转载 2023-07-24 11:11:28 · 759 阅读 · 0 评论 -
二维码扫描登录原理
二维码又称二维条码,常见的二维码为QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型。----来自百度百科在商品上,一般都会有条形码,条形码也称为一维码,条形码只能表示一串数字。二维码要比条形码丰富很多,可以存储数字、字符串、图片、文件等,比如我们可以把存储在二维码中,扫码二维码我们就可以获取到百度的地址。可能用文字说起来还是比较难理解,您可以百度:草料二维码,一款二维码生成。转载 2023-06-12 19:57:22 · 2263 阅读 · 0 评论 -
线上接口变慢,如何排查
文转载自微信公众号「菜鸟飞呀飞」,作者刘进坤 。转载本文请联系菜鸟飞呀飞公众号。前言这是面试阿里时的一道题,也是平时工作中处理线上问题经常遇到的一类问题,所以耐心看完吧,无论是工作还是面试,帮助都很大。首先线上接口变慢,原因可能有很多,有可能是网络,有可能是慢 SQL,有可能是服务本身出现了问题,还有可能是机器达到了性能瓶颈。而机器性能瓶颈也又可以分为磁盘 IO 瓶颈、CPU 性能瓶颈、网卡瓶颈等等,本文主要从 CPU 出现性能瓶颈这个角度来分析下问题出现在哪儿。为什么选 CPU 来分析呢?转载 2021-11-19 18:39:37 · 3456 阅读 · 0 评论 -
两阶段VS三阶段提交协议
举例来说,假设有一个决策小组由一个主持人负责与多位组员以电话联络方式协调是否通过一个提案,以两阶段提交来说,主持人收到一个提案请求,打电话跟每个组员询问是否通过并统计回复,然后将最后决定打电话通知各组员。要是主持人在跟第一位组员通完电话后失忆,而第一位组员在得知结果并执行后老人痴呆,那么即使重新选出主持人,也没人知道最后的提案决定是什么,也许是通过,也许是驳回,不管大家选择哪一种决定,都有可能与第一位组员已执行过的真实决定不一致,老板就会不开心认为决策小组沟通有问题而解雇。转载 2023-06-07 19:44:30 · 77 阅读 · 0 评论 -
分布式调度框架
我们先思考下面几个业务场景的解决方案:很多业务场景需要我们某一特定的时刻去做某件任务,定时任务解决的就是这种业务场景。一般来说,系统可以使用消息传递代替部分定时任务,两者有很多相似之处,可以相互替换场景。如,上面发货成功发短信通知客户的业务场景,我们可以在发货成功后发送MQ消息到队列,然后去消费mq消息,发送短信。但在某些场景下不能互换:时间驱动/事件驱动:内部系统一般可以通过时间来驱动,但涉及到外部系统,则只能使用时间驱动。如怕取外部网站价格,每小时爬一次批量处理/逐条处理:批量处理堆积的数据更加高效,在转载 2023-06-07 18:36:35 · 207 阅读 · 0 评论 -
图解HTTPS建立过程
在整个过程中,一共涉及2对公私钥(一对由服务器产生,主要用于加密,一对由CA产生,主要用于签名)对和1对对称密钥(用户客户端和服务端加密传输数据)为什么要多一个CA呢?假设没有CA,那么如果服务器返回的包含公钥的包被hack截取,然后hack也生成一对公私钥,他将自己的公钥发给客户端。hack得到客户端数据后,解密,然后再通过服务器的公钥加密发给服务器,这样数据就被hack获取。有了CA后,客户端根据内置的CA根证书,很容易识别出hack的公钥不合法,或者说hack的证书不合法。转载 2023-05-30 12:09:38 · 184 阅读 · 0 评论 -
聊聊单点登录(SSO)中的CAS认证
随着企业的发展,一个大型系统里可能包含 n 多子系统, 用户在操作不同的系统时,需要多次登录,很麻烦,我们需要一种全新的登录方式来实现多系统应用群的登录,这就是单点登录。web 系统 由单系统发展成多系统组成的应用群,复杂性应该由系统内部承担,而不是用户。无论 web 系统内部多么复杂,对用户而言,都是一个统一的整体,也就是说,用户访问 web 系统的整个应用群与访问单个系统一样,登录/注销 只要1次就够了即单点登录,一种对于许多相互关联,但是又是各自独立的软件系统,提供访问控制的方法。转载 2023-05-30 10:49:41 · 400 阅读 · 0 评论 -
LVS负载均衡(LVS简介、三种工作模式、十种调度算法)
LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,目前LVS已经被集成到Linux内核模块中。转载 2023-04-13 17:57:31 · 2927 阅读 · 0 评论 -
3分钟带你了解到底什么是CDN?
例如,你有一台服务器上存放了很多资料,你使用docs.example.com去访问这些资源,但又希望通过documents.example.com也能访问到这些资源,那么你就可以在您的DNS解析服务商添加一条CNAME记录,将documents.example.com指向docs.example.com,添加该条CNAME记录后,所有访问documents.example.com的请求都会被转到docs.example.com,获得相同的内容。一个是内容源的存储 一个是内容在 Cache节点中的存储。转载 2023-04-13 17:21:40 · 866 阅读 · 0 评论 -
常见限流算法介绍
1.限流每个API接口都是有访问上限的,当访问频率或者并发量超过其承受范围时候,我们就必须考虑限流来保证接口的可用性或者降级可用性.即接口也需要安装上保险丝,以防止非预期的请求对系统压力过大而引起的系统瘫痪.通常的策略就是拒绝多余的访问,或者让多余的访问排队等待服务,或者引流.如果要准确的控制QPS,简单的做法是维护一个单位时间内的Counter,如判断单位时间已经过去,则将Counter重置零.此做法被认为没有很好的处理单位时间的边界,比如在前一秒的最后一毫秒里和下一秒的第一毫秒都触发了最大的转载 2022-01-06 12:19:44 · 884 阅读 · 0 评论 -
Apollo配置中心动态生效实现原理
Apollo配置中心动态生效实现原理https://blog.csdn.net/Rongbo_J/article/details/93379683转载 2021-12-26 22:28:49 · 495 阅读 · 0 评论 -
数字签名和数字证书的原理解读(图文)
数字签名和数字证书的区别是什么?数字证书是由权威机构CA证书授权中心发行的,能提供在Internet上进行身份验证的一种权威性电子文档。而数字签名是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。对于数字签名和数字证书的运用原理,相信有不少朋友还不清楚,下文将为大家解疑答惑。数字签名和数字证书原理1. 鲍勃有两把钥匙,一把是公钥,另一把是私钥。2. 鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把。3. 苏珊要给鲍勃写.转载 2021-12-02 18:31:17 · 1125 阅读 · 0 评论 -
深入理解HTTPS工作原理
前言近几年,互联网发生着翻天覆地的变化,尤其是我们一直习以为常的HTTP协议,在逐渐的被HTTPS协议所取代,在浏览器、搜索引擎、CA机构、大型互联网企业的共同促进下,互联网迎来了“HTTPS加密时代”,HTTPS将在未来的几年内全面取代HTTP成为传输协议的主流。读完本文,希望你能明白:HTTP通信存在什么问题 HTTPS如何改进HTTP存在那些问题 HTTPS工作原理是什么想阅读更多优质文章请猛戳GitHub博客,一年五十篇优质文章等着你!一、什么是HTTPSHTTPS是在HT转载 2021-12-02 17:28:34 · 661 阅读 · 9 评论 -
微服务之-ServiceMesh
今年,ServiceMesh(服务网格)概念在社区里头非常火,有人提出2018年是ServiceMesh年,还有人提出ServiceMesh是下一代的微服务架构基础。作为架构师,如果你现在还不了解ServiceMesh的话,是否感觉有点落伍了?那么到底什么是ServiceMesh?它诞生的背景是什么?它解决什么问题?企业是否适合引入ServiceMesh?根据近年在一线互联网企业的实践和思考,从个人视角出发,我为大家一一解答这些问题。微服务架构的核心技术问题在业务规模化和研发效能提升等因素的驱动下,转载 2021-12-01 15:37:15 · 767 阅读 · 0 评论 -
JdbcTemplate 层级多数据源查询
业务场景,作为下游系统,对上游多个系统有读,没写操作。依赖: <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.8</version> </dependency>packag原创 2021-10-26 15:59:19 · 1064 阅读 · 2 评论 -
Counting Bloom Filter 的原理和实现
0x00 前言标准的 Bloom Filter 是一种比较简单的数据结构,只支持插入和查找两种操作。在所要表达的集合是静态集合的时候,标准 Bloom Filter 可以很好地工作,但是如果要表达的集合经常变动,标准Bloom Filter的弊端就显现出来了,因为它不支持删除操作。这就引出来了本文要谈的 Counting Bloom Filter,后文简写为 CBF。0x01 原理一、BF 为什么不支持删除BF 为什么不能删除元素?我们可以举一个例子来说明。比如要删除集合中的成员 dan转载 2021-10-25 11:34:15 · 340 阅读 · 0 评论 -
破解 Java Agent 探针黑科技
一、什么是 Java Agent ?笼统地来讲,Java Agent 是一个统称,该功能是 Java 虚拟机提供的一整套后门。通过这套后门可以对虚拟机方方面面进行监控与分析。甚至干预虚拟机的运行。Java Agent 又叫做 Java 探针,Java Agent 是在 JDK1.5 引入的,是一种可以动态修改 Java 字节码的技术。Java 类编译之后形成字节码被 JVM 执行,在 JVM 在执行这些字节码之前获取这些字节码信息,并且通过字节码转换器对这些字节码进行修改,来完成一些额外的功能,这种转载 2021-10-22 15:23:42 · 753 阅读 · 0 评论 -
Skywalking分布式追踪与监控
官网地址:Apache SkyWalkingAPM全称Application Performance Management应用性能管理,目的是通过各种探针采集数据,收集关键指标,同时搭配数据呈现以实现对应用程序性能管理和故障管理的系统化解决方案。Zabbix、Premetheus、open-falcon等监控系统主要关注服务器硬件指标与系统服务运行状态等,而APM系统则更重视程序内部执行过程指标和服务之间链路调用情况的监控,APM更有利于深入代码找到请求响应“慢”的根本问题,与Zabbix之类的监控转载 2021-10-22 15:04:53 · 1029 阅读 · 0 评论 -
各大厂分布式链路跟踪系统架构对比
随着互联网架构的扩张,分布式系统变得日趋复杂,越来越多的组件开始走向分布式化,如微服务、消息收发、分布式数据库、分布式缓存、分布式对象存储、跨域调用,这些组件共同构成了繁杂的分布式网络,那现在的问题是一个请求经过了这些服务后其中出现了一个调用失败的问题,只知道有异常,但具体的异常在哪个服务引起的就需要进入每一个服务里面看日志,这样的处理效率是非常低的。 分布式调用链其实就是将一次分布式请求还原成调用链路。显式的在后端查看一次分布式请求的调用情况,比如各个节点上的耗时、请求具体打到了哪台机器上...转载 2021-10-22 14:47:02 · 1314 阅读 · 0 评论 -
基于的trace_id链路追踪
目前公司的微服务架构是基于Spring Cloud来实现的,而在实现服务间trace_id链路追踪的时候,发现服务提供方和服务调用方的trace_id不一致,所以在此记录该问题的解决方案,并针对Java体系中常见的场景进行了分析和给出了具体的实现方案。一、概述在微服务的体系架构中,都存在一个服务与服务之间的调用链路追踪问题。虽然在生产环境中会采用第三方的组件或服务来实现链路追踪,比如SkyWalking、阿里云arms等,但一旦脱离开这些第三方的功能,微服务体系中的问题排查将会变得异常艰辛,所以.转载 2021-09-08 20:14:37 · 6153 阅读 · 0 评论 -
生成订单30分钟未支付,则自动取消,该怎么实现?
引言在开发中,往往会遇到一些关于延时任务的需求。例如生成订单30分钟未支付,则自动取消 生成订单60秒后,给用户发短信对上述的任务,我们给一个专业的名字来形容,那就是延时任务。那么这里就会产生一个问题,这个延时任务和定时任务的区别究竟在哪里呢?一共有如下几点区别定时任务有明确的触发时间,延时任务没有 定时任务有执行周期,而延时任务在某事件触发后一段时间内执行,没有执行周期 定时任务一般执行的是批处理操作是多个任务,而延时任务一般是单个任务下面,我们以判断订单是否超时为例,进行方案分析.转载 2021-09-02 14:54:34 · 289 阅读 · 0 评论 -
单点登录,从原理到实现
一、单系统登录机制1、http无状态协议 但这也同时意味着,任何用户都能通过浏览器访问服务器资源,如果想保护服务器的某些资源,必须限制浏览器请求;要限制浏览器请求,必须鉴别浏览器请求,响应合法请求,忽略非法请求;要鉴别浏览器请求,必须清楚浏览器请求状态。既然http协议无状态,那就让服务器和浏览器共同维护一个状态吧!这就是会话机制。2、会话机制 浏览器第一次请求服务器,服务器创建一个会话,并将会话的id作为响应的一部分发送给浏览器,浏览器存储会话id,并在后续第二次和第三次请求中..转载 2021-05-18 15:10:02 · 200 阅读 · 0 评论