avatar
文章
360
标签
49
分类
10
首页
时间轴
分类
关于
Logo只有那年胜过年年
搜索
首页
时间轴
分类
关于

只有那年胜过年年

分布式系统架构常识:CAP理论
发表于2025-10-29|架构
什么是CAP理论?2000年7月,加州大学伯克利分校的Eric Brewer教授在ACM PODC会议上提出CAP猜想。2年后麻省理工学院的Seth Gilbert和NancyLynch从理论上证明了CAP,之后CAP理论正式成为分布式计算领域的公认定理。 CAP理论是由下面三个概念组成的,且在分布式系统中三者不能兼得,只能同时满足两种条件。 一致性(C) All nodes see the same data at the same time 所有数据库集群节点在同一时间点看到的数据完全一致,即所有节点能实时保持数据同步。 可用性(A) Reads and writes always succeed 读写操作永远是成功的。即服务一直是可用的,即使集群一部分节点故障,集群整体还能正常响应客户端的读写请求。 分区容错性(P) The system continues to operate despite arbitrary message loss or failure of part of the system 尽管系统中有任意的信息丢失或故障,系统仍在继续运行。以实...
到底什么是分布式系统?
发表于2025-10-29|架构
分布式系统背景说分布式系统必须要说集中式系统,集中式系统中整个项目就是一个独立的应用,整个应用也就是整个项目,所有的东西都在一个应用里面。 如下图所示 如一个网站就是一个应用,最后是多个增加多台服务器或者多个容器来达到负载均衡的避免单点故障的目的,当然,数据库是可以分开部署的。 集中式很明显的优点就是开发测试运维会比较方便,不用为考虑复杂的分布式环境。 集中式很明显的弊端就是不易扩展,每次更新都必须更新所有的应用。而且,一个有问题意味着所有的应用都有问题。当系统越来越大,集中式将是系统最大的瓶颈。 什么是分布式系统? 分布式系统是若干独立计算机的集合,这计算机对用户来说就像单个相关系统。 以上定义摘自<<分布式系统原理与范型>>一书。 也就是说分布式系统背后是由一系列的计算机组成的,但用户感知不到背后的逻辑,就像访问单个计算机一样。 说的有点绕,我们可以来简单看下分布式系统图。 分布式系统利弊在分布式系统中: 1、应用可以按业务类型拆分成多个应用,再按结构分成接口层、服务层;我们也可以按访问入口分,如移动端、PC端等定义不同的接口应用; 2、数据库可...
代码写成这样,老夫无可奈何
发表于2025-10-29|其他
你见过最无可奈何的代码是什么? 今天,栈长就来总结一下我遇到过的一些神逻辑代码,不一定很全,但我真心写不出,真心让我自叹不如啊! 1、耍猴的最佳手段还记得 XX 手机的抢购活动么,抢购按钮的代码类似是这样的: <a href="javasript:alert('抢购结束!')">立即抢购</a> 活动还没开始就结束了。。 后面有人挖出来这段神逻辑,大家真是哭晕在厕所了,还好,抢购买手机这种我从来不参加。。 就是在前端写死代码造成抢购结束的假象,其实请求压根没有发送到服务器,或者休眠几秒直接跳转到抢购结束页面,良心点的,点 10 次有一次发到服务器就不错了,这样耍猴是不是太好玩了? 众所周知,为了提高服务器的承载能力,现在各类 APP、网页等都会或多或少加入前端缓存,但上面这种耍猴的代码也太无耻了。 2、猪一样的队友大家有没有见过这样的代码: ... 这上面的活动价比原价还贵,真是哭笑不得…… 类似这样的代码,一些程序员在注释中说明活动的内容,又或者是把一些生产上环境的 IP、端口、用户名、密码等...
写完排序算法
发表于2025-10-29|其他
刚写完这段代码,就被开除了…… 栈长前些天刚写完上面这篇文章,没几天,又来一个悲剧。。。 据说是一个月薪 9K 的 Java 程序员,因老板让他写一个排序算法,然后他就写了一段屌炸天的休眠排序算法,接着他就被老板开除了…… 排序算法代码大概是这样的: 这段代码有什么问题? 这个程序员更屌啊,数字排序,用一行简单的 Arrays.sort 就搞定的东西,他竟用到了这么多概念。 1、循环 2、线程休眠 3、多线程 下面贴上完整的代码: /** * */ public class ArraySort implements Runnable { private int number; public ArraySort(int number) { this.number = number; } public static void main(String[] args) { int[] numbers = new int[]{...
分布式服务防雪崩熔断器,Hystrix 理论实战
发表于2025-10-29|架构
Hystrix是什么?hystrix对应的中文名字是“豪猪”,豪猪周身长满了刺,能保护自己不受天敌的伤害,代表了一种防御机制,这与hystrix本身的功能不谋而合,因此Netflix团队将该框架命名为Hystrix,并使用了对应的卡通形象做作为logo。 在一个分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等,如何能够保证在一个依赖出问题的情况下,不会导致整体服务失败,这个就是Hystrix需要做的事情。Hystrix提供了熔断、隔离、Fallback、cache、监控等功能,能够在一个、或多个依赖同时出现问题时保证系统依然可用。 为什么需要Hystrix?在大中型分布式系统中,通常系统很多依赖(HTTP,hession,Netty,Dubbo等),如下图: 在高并发访问下,这些依赖的稳定性与否对系统的影响非常大,但是依赖有很多不可控问题:如网络连接缓慢,资源繁忙,暂时不可用,服务脱机等。 如下图:QPS为50的依赖 I 出现不可用,但是其他依赖仍然可用。 当依赖I 阻塞时,大多数服务器的线程池就出现阻塞(BLOCK),影响整个线上服务的稳定性.如下图: 在...
分布式系统中处理参数配置的 4 种方案
发表于2025-10-29|架构
一个系统中包含有各种各样的配置信息,如一个日志文件需要配置以下几个信息。 日志文件生成主目录 日志文件名称,不同的日志级别对应不同的文件 当前日志级别 还有其他各种业务参数、系统参数等,大多单一系统是直接把这些配置写死在配置文件中,当部署到测试、生产环境就再修改下配置文件,这样很容易出错,也不能灵活修改。还有就是系统变成分布式系统后,子系统越来越多,你要维护这些配置就变得越来越困难。 我觉得至少要能解决以下几个问题才能算优秀! 1)能在线灵活修改配置 2)能在线动态刷新配置 3)能根据不同环境配置 4)能统一管理维护配置 那么如何灵活维护这些配置呢?我给大家总结了一下几类方法,根据不同的应用场大家参考一下。 1、数据库法把所有参数存储到数据库,系统启动的时候加载到内存。 这种实现方式比较简单,但需要占用数据库资源,系统简单压力较小时可以选用此种方式。 2、打包处理法利用 Maven 的 maven-resources-plugin 插件,然后根据不同的环境(Profile)提供不同环境的配置文件,这样,不同环境的配置信息在打包阶段就决定好了。 这样只能解决了不同操作系统上面的...
写完这段代码
发表于2025-10-29|其他
开除的原因是因为没写注释吗? 显然不是,休眠的逻辑,大家都懂,不需要写注释,你注释写休眠 1 天也没意义啊。。。 这个程序员的思维不是一般的牛啊,获取下一天的日期,居然要休眠等到下一天再获取,欲哭无泪。。。 再来看下加强版的,获取未来几天的日期。。。 /** * 获取未来几天的日期 * @param days 指定的天数 * @author * @return */ public static Date getNextDays(int days){ try { // 休眠指定的天数 Thread.sleep(days * 24 * 60 * 60 * 1000); } catch (InterruptedException e) { e.printStackTrace(); } // 休眠结束后返回日期 return new Date(); } 写完,已笑晕在厕所。。。 想离职找不到借口? 那还不容易,哥送你这段加强版,...
以太坊私有链搭建
发表于2025-10-29|区块链
操作系统:CentOS 6.5 安装依赖组件 sudo yum install git gcc gcc-c++ ntp epel-release nodejs -y 安装golang下载并解压: wget https://studygolang.com/dl/golang/go1.13.4.linux-amd64.tar.gztar zxvf go1.13.4.linux-amd64.tar.gzmv go /usr/local/ 配置环境变量: vi /etc/profile 添加: GOROOT=/usr/local/go PATH=$GOROOT/bin:$PATH 配置生效: source /etc/profile 查看 golang 版本: go version 编译go-ethereum下载并编译以太坊: git clone https://github.com/ethereum/go-ethereum.gitcd g...
区块链怎么学习?
发表于2025-10-29|区块链
区块链技术区块链最初是由一位化名中本聪的人为比特币(一种数字货币)而设计出的一种特殊的数据库技术。从数据的角度来看,区块链是一种把区块以链的方式组合在一起的数据结构,它能够使参与者对全网交易记录的事件顺序和当前状态建立共识。 区块链概括起来是指通过去中心化和去信任的方式集体维护一个可靠数据库的技术。区块链涉及的技术关键点包括:去中心化、去信任、集体维护、可靠数据库、时间戳、非对称加密等。 区块链重新定义了网络中信用的生成方式,在系统中,参与者无需了解其他人的背景资料,也不需要借助第三方机构的担保或保证,区块链保障了系统对价值转移的活动进行记录、传输、存储,其最后的结果一定是可信的。 区块链平台区块链使用方式分为开源项目、商业解决方案、区块链云服务、现有区块链四种方式。技术影响力按面积大小进行区分,面积越大影响力越大,技术成熟度按颜色深浅进行区分,颜色越深技术越成熟。 可以看出以比特币、以太坊、HyperLedger为代表的这三种区块链技术方案最为成熟,所以要学习区块链技术,就学习以太坊平台就可以了。
什么是共识机制?
发表于2025-10-29|区块链
共识机制共识机制的作用是为了确认区块链上的交易的有效性。 共识机制分类目前常见的共识机制有POW工作量证明、POS权益证明、DPOS股份授权证明、Ripple共识机制以及PooL验证池,这几类共识机制各有优劣,应用场景也各不相同,下表展示了从不同维度对这几类共识机制的分析比较。 1、POW(Proof of work)POW即工作量证明,就是众所周知的挖矿,它是一种竞争共识,通过工作量的证明来获得生成区块的权力。它的优点是完全的去中心化,各个节点完全平等,而且可以自由的进出;缺点则是POW会造成大量的挖矿资源浪费,达成共识的周期也比较长。 2、POS(Proof of Stake)POS即权益证明,是POW的一种升级共识机制,它主要解决了POW工作量计算浪费的问题。当前POS已有很多不同的变种,但基本还是根据每个节点所占有代币的数量和时间(即权益)来决定其挖矿的难度。它的优点是缩短了各个节点之间达成共识的时间,缺点则是同POW一样仍然需要挖矿,并且POS会使得“富者更富”。 3、DPOS(Delegate Proof of Stake)DPOS即股份授权证明机制,是POS的一个...
1…131415…36
avatar
2025
文章
360
标签
49
分类
10
公告
🌸 春去秋来,花开花落 📚 桌上的日历又薄了几页 💭 记忆中的昨天还那么清晰
最新文章
掌握 Spring 框架这 10 个扩展点,开发效率直接翻倍2025-11-10
Minikube安装教程2025-11-07
Deepseek 本地部署各个版本超级详细教学,网页版、软件版2025-11-04
Slow HTTP POST 慢速攻击2025-10-30
JDK 紧急漏洞,XMLDecoder反序列化攻击2025-10-30
分类
  • 其他3
  • 区块链4
  • 后端225
  • 安全漏洞3
  • 工具30
  • 性能4
  • 教程1
  • 数据库21
  • 架构15
  • 程序人生54
标签
文章LinuxJVM分布式技术其他区块链基础安全漏洞多线程性能优化新特性架构算法程序人生行业动态规范资料集合进阶面试Elastic JobdockerJWTDubboMyBatisNettyShiroSpringSpring MVCSpring CloudTomcatSpring BootZookeeper日志开源综合技术消息队列缓存连接池Eclipse
归档
  • 2025年11月 3
  • 2025年10月 355
  • 2025年09月 1
  • 2024年12月 1
网站信息
文章数目 :
360
本站访客数 :
本站总浏览量 :
最后更新时间 :
访客地图
© 2025 By 2025
搜索
数据加载中