系统架构
文章平均质量分 87
MayMatrix
J2EE .
展开
-
Springboot 打印唯一traceId,Springboot+MDC+traceId日志中打印唯一traceId
想了解Springboot+MDC+traceId日志中打印唯一traceId的相关内容吗,W3C_0101在本文为您仔细讲解Springboot 打印唯一traceId的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:Springboot,打印唯一traceId,Springboot,打印traceId,下面大家一起来学习吧。转载 2023-02-09 15:25:17 · 1237 阅读 · 0 评论 -
“ 字节码插桩 “ 技术简介
性能优化 ,插件化 ,热修复 ,等技术都需要用到" 字节码插桩 "相关技术;OOP 面向对象编程, 主要针对业务逻辑进行开发 ,大特点封装继承多态;大特点 封装 , 继承 , 多态;大特点封装继承多态;AOP 面向切面编程, 主要针对某个动作进行开发;如 : 给 Android 中所有的 Activity 添加安全策略 , 如果每个页面逐个手动添加 , 可能存在遗漏 , 并且会造成代码冗余;通过 AOP 面向切面编程 , 完成上述操作;转载 2023-02-03 16:22:03 · 1487 阅读 · 0 评论 -
alibaba / Sentinel 系统自适应限流原理
Sentinel 系统自适应限流从整体维度对应用入口流量进行控制,结合应用的 Load、CPU 使用率、总体平均 RT、入口 QPS 和并发线程数等几个维度的监控指标,通过自适应的流控策略,让系统的入口流量和系统的负载达到一个平衡,让系统尽可能跑在最大吞吐量的同时保证系统整体的稳定性。背景在开始之前,我们先了解一下系统保护的目的:保证系统不被拖垮在系统稳定的前提下,保持系统的吞吐量长期以来,系统保护的思路是根据硬指标,即系统的负载 (load1) 来做系统过载保护。当系统负载高于某个阈值,就禁止或转载 2021-11-30 15:57:29 · 327 阅读 · 0 评论 -
keepalived+lvs实现主备(全)
参考文章:lvs+nginx负载均衡 1 lvs高可用(了解) 1.1 什么是高可用 lvs作为负载均衡器,所有请求都先到达lvs,可见lvs处于非常重要的位置,如果lvs服务器宕机后端web服务将无法提供服务,影响严重。 为了屏蔽负载均衡服务器的宕机,需要建立一个备份机。主服务器和备份机上都运行高可用(High Availability)监控程序,通过传送诸如“I am alive”...转载 2021-10-15 20:34:18 · 662 阅读 · 0 评论 -
lvs+keepAlived 高效率负载均衡
一、 简介 1. 负载均衡的类型 负载均衡可以采用硬件设备(例如常常听见的 F5),也可以采用软件负载商用硬件负载设备成本通常较高(一台几十万甚至上百万),所以一般 情况下会采用软件负载软件负载解决的两个核心问题是:选谁、转发,其中最著名的是 lvs 2. lvs 是什么? 英文全称是 Linux Virtual Server,即 Linux 虚拟服务器由 章 ...转载 2021-10-15 20:11:22 · 276 阅读 · 0 评论 -
Nginx七层负载均衡的六种调度算法简介
这篇文章主要介绍了简单了解Nginx七层负载均衡的几种调度算法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下Nginx是一款轻量级的高性能web服务器,同时也是一款非常优秀的负载均衡器和反向代理服务器。由于支持强大的正则匹配规则、动静分离、URLrewrite功能及安装配置简单且对网络稳定性依赖非常小等优点,所以常用来做为七层负载均衡使用。在硬件不差的情况下,通常可以稳定支持几万的并发连接,在硬件性能足够好,且对系统内核参数及Nginx配置进行优化甚至可转载 2021-10-14 18:48:07 · 1132 阅读 · 0 评论 -
Hystrix配置参数说明及配置示例
一、什么情况下会触发fallback方法? 名字 描述 触发fallback EMIT 值传递 NO SUCCESS 执行完成,没有错误 NO FAILURE 执行抛出异常 YES TIMEOUT 执行开始,但没有在允许的时间内完成 YES BAD_REQUEST 执行抛出HystrixBadRequestException NO SHORT_CIRCUITED 断路器...转载 2021-06-17 17:27:14 · 6700 阅读 · 0 评论 -
熔断器Hystrix
熔断器雪崩效应在微服务架构中通常会有多个服务层调用,基础服务的故障可能会导致级联故障,进而造成整个系统不可用的情况,这种现象被称为服务雪崩效应。服务雪崩效应是一种因“服务提供者”的不可用导致“服务消费者”的不可用,并将不可用逐渐放大的过程。如果下图所示:A作为服务提供者,B为A的服务消费者,C和D是B的服务消费者。A不可用引起了B的不可用,并将不可用像滚雪球一样放大到C和D时,雪崩效应就形成了。熔断器(CircuitBreaker)熔断器的原理很简单,如同电力过载保护器。它可以实现快转载 2021-06-17 17:01:04 · 748 阅读 · 0 评论 -
Hystrix原理与实战
背景分布式系统环境下,服务间类似依赖非常常见,一个业务调用通常依赖多个基础服务。如下图,对于同步调用,当库存服务不可用时,商品服务请求线程被阻塞,当有大批量请求调用库存服务时,最终可能导致整个商品服务资源耗尽,无法继续对外提供服务。并且这种不可用可能沿请求调用链向上传递,这种现象被称为雪崩效应。雪崩效应常见场景硬件故障:如服务器宕机,机房断电,光纤被挖断等。 流量激增:如异常流量,重试加大流量等。 缓存击穿/穿透/雪崩:一般发生在应用重启,所有缓存失效时,以及短时间内大量缓存失效时。大量转载 2021-06-17 16:58:46 · 210 阅读 · 0 评论 -
编程新手该如何调优程序?程序员必备性能调优利器——火焰图
本文主要分享火焰图使用技巧,介绍 systemtap 的原理机制,如何使用火焰图快速定位性能问题原因,同时加深对 systemtap 的理解。让我们回想一下,曾经作为编程新手的我们是如何调优程序的?通常是在没有数据的情况下依靠主观臆断来瞎蒙,稍微有些经验的同学则会对差异代码进行二分或者逐段调试。这种定位问题的方式不仅耗时耗力,而且还不具有通用性,当遇到其他类似的性能问题时,需要重复踩坑、填坑,那么如何避免这种情况呢?俗语有曰:兵欲善其事必先利其器,个人认为,程序员定位性能问题也需要一件“利器”。.转载 2021-06-16 17:48:53 · 433 阅读 · 0 评论 -
【基础理论】Jenkins CI/DI持续集成&部署
一.CI/DI持续集成&部署一、什么是持续集成?持续集成是一个开发的实践,需要开发人员定期集成代码到共享存储库。这个概念是为了消除发现的问题,后来出现在构建生命周期的问题。持续集成要求开发人员有频繁的构建。最常见的做法是,每当一个代码提交时,构建应该被触发。1、CI/DI简介互联网软件的开发和发布,已经形成了一套标准流程,假如把开发工作流程分为以下几个阶段:编码 --> 构建 --> 集成 --> 测试 --> 交付 --> 部署正如你在上图中看转载 2021-05-25 17:40:32 · 1012 阅读 · 0 评论 -
【TCP长连接】使用TCP长连接提升服务性能
1、概述在《性能优化篇-理论基础》中,我们知道了提升服务性能的两个思路,分别是提升服务并发能力和降低请求的响应时间(RT)。一个请求的响应时间包括两部分,等待时间和执行时间。在《性能优化篇-减少网络传输包提升服务性能》中分析了如何减少网络包的传输来降低响应的等待时间,从而提升服务的性能。本文继续从网络通信方面来描述如何通过长连接来提升服务性能。2、为什么长连接可以提升服务性能在TCP/IP协议中,传输层负责应用程序之间的网络通信数据的传输,传输层协议主要有UDP和TCP。UDP协议是面向无连接的转载 2020-09-10 17:39:06 · 1754 阅读 · 0 评论 -
【TCP 长连接】Netty源码笔记:TCP长连接和IdleStateHandler
日常工作中TCP长连接在一些优秀的中间件或开源项目中得到大量的使用。比如zookeeper的订阅和监听、日常使用的各种数据库连接池、redis连接池、常用的RPC框架dubbo/美团pigeon、美团的监控系统Cat等等。使用TCP长连接的优势在于:1、有效避免频繁的三次握手、四次挥手开销;2、避免TCP滑动窗口冷启动的低效问题能极大的提升网络通信的效率。缺点也比较明显,当客户端因为断电、网线被拔除等原因突然断开时,服务端没办法及时知道客户端已经断线,不能及时回收socket占用的系统资源。首转载 2020-09-10 17:34:40 · 490 阅读 · 0 评论 -
【TCP 长连接】聊聊 TCP 长连接和心跳那些事
1 前言可能很多 Java 程序员对 TCP 的理解只有一个三次握手,四次挥手的认识,我觉得这样的原因主要在于 TCP 协议本身稍微有点抽象(相比较于应用层的 HTTP 协议);其次,非框架开发者不太需要接触到 TCP 的一些细节。其实我个人对 TCP 的很多细节也并没有完全理解,这篇文章主要针对微信交流群里有人提出的长连接,心跳的问题,做一个统一的整理。在 Java 中,使用 TCP 通信,大概率会涉及到 Socket、Netty,本文会借用它们的一些 API 和设置参数来辅助介绍。2 长连接转载 2020-09-10 17:17:26 · 747 阅读 · 1 评论 -
Keepalived简介、双机热备
Keepalived简介Keepalived是Linux下一个轻量级别的高可用解决方案。高可用(High Avalilability,HA),其实两种不同的含义:广义来讲,是指整个系统的高可用行,狭义的来讲就是之主机的冗余和接管, 它与HeartBeat RoseHA 实现相同类似的功能,都可以实现服务或者网络的高可用,但是又有差别,HeartBeat是一个专业的、功能完善的高可用软件,它提供了HA 软件所需的基本功能,比如:心跳检测、资源接管,检测集群中的服务,在集群节点转移共享IP地址的所有者等等。转载 2020-06-18 11:20:05 · 333 阅读 · 0 评论 -
负载均衡比较:LVS,HAProxy和Nginx
负载均衡(Load Balance)是应用于互联网后台系统架构设计中的各层,它将请求均匀分摊到多个操作单元上执行。目前,在线上环境中应用较多的负载均衡器硬件有F5 BIG-IP,但是硬件设备昂贵,不如软件适应互联网公司的快速发展。最常用的负载均衡软件有LVS、HAProxy和Nginx,结合高可用软件有Heartbeat、Keepalived,可以搭建出承载海量请求的成熟架构如LVS+Keepalived、HAProxy+keepalived等.专长三种负载均衡软件LVS、HAProxy和Nginx转载 2020-06-18 11:14:11 · 347 阅读 · 0 评论 -
内存与硬盘读取速度对比
测试速度:https://diy.pconline.com.cn/556/5561296_2.html内存条品牌:红色威龙增强版DDR4 2666HMz(16-18-18-43-2T)测试成绩连续读取:L1CACHE大概是1700GB/s的水平L3CACHE 大概是200GB/s的水平DDR4内存大概是60GB/s的水平nvme ssd大概是2000MB/s的水平S...原创 2020-04-22 21:22:09 · 26339 阅读 · 2 评论 -
内存的寻址、传输、存取时间与延迟原理介绍
现代的PC(包括NB)都是以存储器为核心的多总线结构,即CPU只通过存储总线与主存储器交换信息(先在Cache里找数据,如果找不到,再去主存找)。输入输出设备通过I/O总线直接与主存储器交换信息。在I/O设备和主存储器之间配置专用的I/O处理器。CPU不直接参与I/O设备与主存储器之间的信息传送。 存储器分为内部存储器和外部存储器(或者叫主存储器和辅助存储器)。内部存储器简称内存,也可称为...转载 2020-04-22 21:07:47 · 5339 阅读 · 0 评论 -
「分布式系统前沿技术」专题 | 微服务架构何去何从?
「分布式系统前沿技术」专题 | 微服务架构何去何从?数据库分布式分布式系统微服务发布于 2019-12-27约 15 分钟分布式技术的发展,深刻地改变了我们编程的模式和思考软件的模式。值 2019 岁末,PingCAP 联合 InfoQ 共同策划出品“分布式系统前沿技术 ”专题, 邀请众多技术团队共同参与,一起探索这个古老领域的新生机。本文出自转转首席架构师孙玄。微服务架构模...转载 2020-02-27 16:26:17 · 296 阅读 · 0 评论 -
几种灰度发布方案
原文:https://blog.csdn.net/hueason/article/details/81054093 一、灰度发布定义灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B 上面来。灰度发布...转载 2018-12-10 17:22:19 · 14938 阅读 · 1 评论 -
大型网站架构体系的演变 负载均衡架构设计
转自:http://blog.csdn.net/dinglang_2009/article/details/46398885本文让你对负载均衡有一个初步的了解。互联网上有很多关于网站架构的各种分享,有些主要是从运维和基础架构的角度去分析的(堆机器,做集群),太关注技术细节实现,普通的开发人员基本看不太懂。本文上篇将主要介绍大型网站基础架构的扩展,下篇则重点从转载 2015-11-06 17:40:05 · 683 阅读 · 0 评论 -
Nginx学习-3 解决nginx负载均衡的session问题
查了一些资料,看了一些别人写的文档,总结如下,实现nginx session的共享PHP服务器有多台,用nginx做负载均衡,这样同一个IP访问同一个页面会被分配到不同的服务器上,如果session不同步的话,就会出现很多问题,比如说最常见的登录状态,下面提供了几种方式来解决session共享的问题:1、不使用session,换用cookiesession是存放在服务器端的转载 2015-12-11 18:06:07 · 1818 阅读 · 0 评论 -
MySQL 的各存储引擎特点-MySQ 存储引擎选择
前言MySQL 的存储引擎可能是所有关系型数据库产品中最具有特色的了,不仅可以同时使用多种存储引擎,而且每种存储引擎和MySQL之间使用插件方式这种非常松的耦合关系。由于各存储引擎功能特性差异较大,这篇文章主要是介绍如何来选择合适的存储引擎来应对不同的业务场景。 MyISAM1.特性 不支持事务:MyISAM存储引擎不支持事务,所以对事务有要求的业务场景不能使用转载 2016-07-19 15:24:58 · 381 阅读 · 0 评论 -
Docker到底是什么?为什么它这么火!
如果你是数据中心或云计算IT圈子的人,这一年多来应该一直在听到普通的容器、尤其是Docker,关于它们的新闻从未间断过。Docker1.0在今年6月发布后,声势更是达到了前所未有的程度。 动静之所以这么大,就是因为许多公司在以惊人的速度采用Docker。在今年7月的开源大会(OSCon)上,我遇到了早已将服务器应用程序从虚拟机(VM)转移到容器的无数企业。的确,Docker转载 2017-02-08 10:29:53 · 3281 阅读 · 0 评论 -
(精)数据库分库分表
数据库分库分表(sharding)系列(五) 一种支持自由规划无须数据迁移和修改路由代码的Sharding扩容方案数据库分库分表(sharding)系列(四) 多数据源的事务处理数据库分库分表(sharding)系列(三) 关于使用框架还是自主开发以及sharding实现层面的考量数据库分库分表(sharding)系列(二) 全局转载 2017-03-10 21:24:42 · 431 阅读 · 0 评论 -
事务和两阶段提交,三阶段提交协议(有限状态自动机)
转自:http://blog.csdn.net/it_man/article/details/9730559事务和两阶段提交,三阶段提交协议(有限状态自动机)•1 事务的ACID 事务是保证数据库从一个一致性的状态永久地变成另外一个一致性状态的根本,其中,ACID是事务的基本特性。 A是Atomicity,原子性。一个事务往往涉及到许多的子操作,转载 2017-03-10 21:27:39 · 379 阅读 · 0 评论 -
用消息队列和消息应用状态表来消除分布式事务
由于数据量的巨大,大部分Web应用都需要部署很多个数据库实例。这样,有些用户操作就可能需要去修改多个数据库实例中的数据。传统的解决方法是使用分布式事务保证数据的全局一致性,经典的方法是使用两阶段提交协议。长期以来,分布式事务提供的优雅的全局ACID保证麻醉了应用开发者的心灵,很多人都不敢越雷池一步,想像没有分布式事务的世界会是怎样。如今就如MySQL和PostgreSQL这类面向低端用户的转载 2017-03-10 21:31:19 · 463 阅读 · 0 评论 -
Ant和Ivy使用
Apache Ivy是专门用来管理项目的jar包依赖的。我们知道Maven已经有很出色的这方面的功能,如果你已经在使用Maven,就没必要使用Ivy了。但是其实Maven除了这方面功能,还有很多强大的功能,如果你只需要管理jar包依赖而已,那么可以只用Ivy就够了,用Maven就有点大材小用。 1. 首先,你的机器应该已经安装了Ant和JDK,最好是1.6或更高版本的Ant,并在转载 2017-04-20 16:24:53 · 1018 阅读 · 0 评论 -
Hessian 原理分析、代码示例
Hessian 原理分析一. 远程通讯协议的基本原理网络通信需要做的就是将流从一台计算机传输到另外一台计算机,基于传输协议和网络 IO 来实现,其中传输协议比较出名的有 http 、 tcp 、 udp 等等, http 、 tcp 、 udp 都是在基于 Socket 概念上为某类应用场景而扩展出的传输协议,网络 IO ,主要有 bio 、 nio 、 ai转载 2017-04-20 17:57:35 · 650 阅读 · 0 评论 -
lvs、haproxy、nginx 负载均衡的比较分析
对软件实现负载均衡的几个软件,小D详细看了一下,从性能和稳定上还是LVS最牛,基本达到了F5硬件设备的60%性能,其他几个10%都有点困难。 不过就因为LVS忒牛了,配置也最麻烦了,而且健康检测需要另外配置Ldirector,其他HAPROXY和NGINX自己就用,而且配置超级简单。 所以小D建议,如果网站访问量不是门户级别的用HA转载 2017-05-23 14:11:28 · 319 阅读 · 0 评论 -
【ZooKeeper 3】ZooKeeper典型应用场景一览
ZooKeeper典型应用场景一览数据发布与订阅(配置中心)发布与订阅模型,即所谓的配置中心,顾名思义就是发布者将数据发布到ZK节点上,供订阅者动态获取数据,实现配置信息的集中式管理和动态更新。例如全局的配置信息,服务式服务框架的服务地址列表等就非常适合使用。应用中用到的一些配置信息放到ZK上进行集中管理。这类场景通常是这样:应用在启动的时候转载 2017-07-18 14:55:30 · 475 阅读 · 0 评论 -
alibaba/druid DRUID连接池的实用 配置详解
项目源码:https://github.com/alibaba/druidDRUID介绍 DRUID是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0、DBCP、PROXOOL等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况,可以说是针对监控而生的DB连接池(据说是目前最好的连接池,不知道速度有没有转载 2017-10-20 14:45:36 · 11498 阅读 · 1 评论 -
DURID连接池wiki常见问题
https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98English | 中文欢迎大家使用Druid,常见问题在这里解答,希望对大家有所帮助。1. Druid是什么?Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。2. 在哪里下转载 2017-10-20 15:10:17 · 2008 阅读 · 0 评论 -
windows部署iBase4J、eclipse发布(亲测可用)
windows部署iBase4J所需环境:jdk 1.8、eclipse(myeclipse不可以)、nginx、activeMQ 、zookeeper、redis第一步 下载jdk1.8 按步骤安装至指定位置即可第二步 安装eclipse 双击eclipse-inst-win64.exe安装成功,创建一个自己的工作空间转载 2017-10-13 17:29:40 · 632 阅读 · 0 评论 -
JAVA分布式快速开发基础平台 iBase4J 推荐 国产 J2EE框架
iBase4J 详细介绍https://www.oschina.net/p/iBase4JiBase4J项目简介iBase4J是Java语言的分布式系统架构。 使用Spring整合开源框架。使用Maven对项目进行模块化管理,提高项目的易开发性、扩展性。系统包括5个子系统:公共功能、系统管理Service、系统管理Web、业务Service、业务Web。公共功能转载 2017-10-13 17:48:58 · 759 阅读 · 0 评论 -
微博轻量级RPC框架Motan
Motan 正式开源了,项目地址为https://github.com/weibocom/motan。微博技术团队希望未来能有更多优秀的开源人入驻,并进一步完善优化。微博轻量级RPC框架Motan正式开源 Motan 是微博技术团队研发的基于 Java 的轻量级 RPC 框架,已在微博内部大规模应用多年,每天稳定支撑微博上亿次的内部调用。Motan 基于微博的高并发和高负载场景优转载 2017-10-25 17:07:26 · 650 阅读 · 0 评论 -
分布式缓存概述
转自:http://blog.csdn.net/dinglang_2009/article/details/8302258本文将从理论的角度去介绍,让大家从宏观上对“分布式缓存、nosql”等技术有所了解,以便进一步学习和使用。在构建大规模的web应用时,缓存技术可以说是必备的,学习的必要性不言而喻。分布式缓存概述1.1 分布式缓存的特性分布式缓存具转载 2015-11-06 17:52:38 · 2265 阅读 · 0 评论