架构设计
_iLeGeND
生命不息 奋斗不止
展开
-
高吞吐、高可用MQ对比分析
基本对比信息 ActiveMQRabbitMQRocketMQKafkaZeroMQ吞吐量比RabbitMQ低2.6w/s(消息做持久化)11.6w/s17.3w/s29w/s开发语言JavaErlangJavaScala/Java转载 2018-01-31 16:32:34 · 428 阅读 · 0 评论 -
CAP和BASE理论理解
分布式系统都是基于CAP/BASE理论进行设计的。CAP/BASE在分布式系统设计过程中提供了最基本的也是最重要的原则。 正确的理解CAP/BASE能够更好的指导分布式系统的设计,当然了只有经历了大量的分布式系统实战,才能更加深刻的理解CAP/BASE理论。CAPCAP是一致性(Consistency),可用性(Availability),分区容错性(Partition tolerance)的缩写...转载 2018-06-27 22:52:57 · 190 阅读 · 0 评论 -
CAP原理和BASE思想
分布式领域CAP理论,Consistency(一致性), 数据一致更新,所有数据变动都是同步的Availability(可用性), 好的响应性能Partition tolerance(分区容忍性) 可靠性定理:任何分布式系统只可同时满足二点,没法三者兼顾。忠告:架构师不要将精力浪费在如何设计能满足三者的完美分布式系统,而是应该进行取舍。关系数据库的ACID模型拥有 高一致性 + 可用性 很难进行分...转载 2018-06-27 22:47:44 · 122 阅读 · 0 评论 -
浅析DDD(领域驱动设计)
最近在做一些微服务相关的设计,内容包括服务的划分,Restful API的设计等。其中比较棘手的就是Service的职责划分:如何抽象具有统一业务范畴的Model,使其模块化,又如何高度提炼并组合多模块,使得业务可独立服务化。为了找寻答案,看了不少书籍和博客,在DDD中找到了一些思路,个人觉得受益匪浅,或许也可以受用于大家,特分享于此。什么是DDD软件开发不是一蹴而就的事情,我们不可能在不了解产品...转载 2018-06-27 22:45:29 · 658 阅读 · 1 评论 -
下一代微服务架构——Service Mesh
Service Mesh 是什么?为什么我们需要它?Service Mesh(服务网格)是一个基础设施层,让服务之间的通信更安全、快速和可靠。如果你在构建云原生应用,那么就需要 Service Mesh。在过去的一年中,Service Mesh 已经成为云原生技术栈里的一个关键组件。很多拥有高负载流量业务的公司都在他们的生产应用里加入了 Service Mesh,如 PayPal、Lyft、Tic...转载 2018-07-16 11:30:37 · 877 阅读 · 0 评论 -
微服务(Microservices)——Martin Flower【翻译】
原文是 Martin Flower 于 2014 年 3 月 25 日写的《Microservices》。本文内容微服务微服务风格的特性组件化(Componentization )与服务(Services)围绕业务功能的组织产品不是项目强化终端及弱化通道分散治理分散数据管理基础设施自动化容错性设计设计改进 微服务是未来吗其它微服务系统多大微服务与SOA多语言多选择实践标准和强制标准让做对事更容...转载 2018-06-20 11:54:59 · 677 阅读 · 0 评论 -
初步理解JWT并实践使用
JWT是一种用于双方之间传递安全信息的简洁的、URL安全的表述性声明规范。JWT作为一个开放的标准(RFC 7519),定义了一种简洁的,自包含的方法用于通信双方之间以Json对象的形式安全的传递信息。因为数字签名的存在,这些信息是可信的,JWT可以使用HMAC算法或者是RSA的公私秘钥对进行签名。简洁(Compact): 可以通过URL,POST参数或者在HTTP header发送,因为数据量小...转载 2018-06-29 23:48:58 · 308 阅读 · 0 评论 -
服务器端负载均衡和客户端负载均衡的区别?
服务器端负载均衡:例如Nginx,通过Nginx进行负载均衡,先发送请求,然后通过负载均衡算法,在多个服务器之间选择一个进行访问;即在服务器端再进行负载均衡算法分配。客户端负载均衡:例如spring cloud中的ribbon,客户端会有一个服务器地址列表,在发送请求前通过负载均衡算法选择一个服务器,然后进行访问,这是客户端负载均衡;即在客户端就进行负载均衡算法分配。...转载 2018-06-18 16:59:47 · 563 阅读 · 0 评论 -
一直对zookeeper的应用和原理比较迷糊,今天看一篇文章,讲得很通透,分享如下:
场景一有这样一个场景:系统中有大约100w的用户,每个用户平 均有3个邮箱账号,每隔5分钟,每个邮箱账需要收取100封邮件,最多3亿份邮件需要下载到服务器中(不含附件和正文)。用20台机器划分计算的压力,从 多个不同的网路出口进行访问外网,计算的压力得到缓解,那么每台机器的计算压力也不会很大了。 通过我们的讨论和以往的经验判断在这场景中可以实现并行计算,但我们还期望能对并行计算的节点...转载 2018-06-09 15:32:01 · 750 阅读 · 0 评论 -
Zookeeper全解析——Paxos作为灵魂
那么ZK Server最基础的东西是什么呢?我想应该是Paxos了。所以本文会介绍Paxos以及它在ZK Server中对应的实现。先说Paxos,它是一个基于消息传递的一致性算法,Leslie Lamport在1990年提出,近几年被广泛应用于分布式计算中,Google的Chubby,Apache的Zookeeper都是基于它的理论来实现的,Paxos还被认为是到目前为止唯一的分布式一致性算法,...转载 2018-06-09 15:12:40 · 185 阅读 · 0 评论 -
JVM知识点总览-中高级Java工程师面试必备
对于搞开发的我们其实也是一样,现在流行的框架越来越多,封装的也越来越完善,各种框架可以搞定一切,几乎不用关注底层的实现,初级程序员只要熟悉基本的使用方法,便可以快速的开发上线;但对于高级程序员来讲,内功的修炼却越发的重要,比如算法、设计模式、底层原理等,只有把这些基础熟练之后,才能在开发过程中知其然知其所以然,出现问题时能快速定位到问题的本质。 对于Java程序员来讲,spring全...转载 2018-06-15 16:02:08 · 188 阅读 · 0 评论 -
Cache-Aside模式
译Cache-Aside该模式是从数据仓库中将数据加载到缓存中,从而提高访问速度的一种模式。该模式可以有效的提高性能,同时也能一定程度上保证缓存中的数据和数据仓库中的数据的一致性,和同步数据到数据仓库中。问题应用通过缓存来优化针对数据仓库的重复访问。当然,令缓存中的数据永远和数据仓库中数据保持一致是不切实际的。应用中的缓存应该事先一些策略来辅助更新缓存保证数据的一致,当然,也需要检测数据过期等情况...转载 2018-05-31 16:17:00 · 1824 阅读 · 0 评论 -
JWT token心得与使用实例
本文你能学到什么?token的组成 token串的生成流程。 token在客户端与服务器端的交互流程 Token的优点和思考 参考代码:核心代码使用参考,不是全部代码JWT token的组成头部(Header),格式如下: { “typ”: “JWT”, “alg”: “HS256” } 由上可知,该token使用HS256加密算法,将头部使用Base64编码可得到如下个格式的字符串:eyJhbG...转载 2018-06-13 22:36:08 · 712 阅读 · 0 评论 -
Euraka和ZOOkeeper比较
Eureka的优势1、在Eureka平台中,如果某台服务器宕机,Eureka不会有类似于ZooKeeper的选举leader的过程;客户端请求会自动切换到新的Eureka节点;当宕机的服务器重新恢复后,Eureka会再次将其纳入到服务器集群管理之中;而对于它来说,所有要做的无非是同步一些新的服务注册信息而已。所以,再也不用担心有“掉队”的服务器恢复以后,会从Eureka服务器集群中剔除出去的风险了...转载 2018-06-20 23:32:02 · 1619 阅读 · 0 评论 -
keepalived VS zookeeper
两者都可以做高可用HA,那么有什么区别呢?1.从主被动的角度考虑 我们知道,nginx server通常和keepalived进行结合,那么keepalived是怎么知道nginx是否存活呢?是nginx主动向keepalived汇报信息?不是的。keepalived是主动向nginx发送请求,如果有响应,那么则nginx可用。 对于zookeeper而言,HDFS,HBase,Yar...转载 2018-06-11 22:37:49 · 128 阅读 · 0 评论 -
JMS简介与ActiveMQ实战
BeanSpring企业应用 1. JMS架构 Java 消息服务(Java Message Service,简称JMS)是用于访问企业消息系统的开发商中立的API。企业消息系统可以协助应用软件通过网络进行消息交互。JMS 在其中扮演的角色与JDBC 很相似,正如JDBC 提供了一套用于访问各种不同关系数据库的公共API,JMS 也提供了独立于特定厂商的企业消息系统访问方式。转载 2017-02-14 23:47:52 · 252 阅读 · 0 评论 -
缓存更新的套路
缓存更新的套路原文地址:http://coolshell.cn/articles/17416.html看到好些人在写更新缓存数据代码时,先删除缓存,然后再更新数据库,而后续的操作会把数据再装载的缓存中。然而,这个是逻辑是错误的。试想,两个并发操作,一个是更新操作,另一个是查询操作,更新操作删除缓存后,查询操作没有命中缓存,先把老数据读出来后放到缓存中,然后更新操作更新了数据库。于是,在缓存中的数据转载 2018-01-02 15:52:30 · 342 阅读 · 0 评论 -
单点登录原理和java实现简单的单点登录
摘要:单点登录(SSO)的技术被越来越广泛地运用到各个领域的软件系统当中。本文从业务的角度分析了单点登录的需求和应用领域;从技术本身的角度分析了单点登录技术的内部机制和实现手段,并且给出Web-SSO和桌面SSO的实现、源代码和详细讲解;还从安全和性能的角度对现有的实现技术进行进一步分析,指出相应的风险和需要改进的方面。本文除了从多个方面和角度给出了对单点登录(SSO)的全面分析,还并且讨论了如何转载 2016-12-06 00:05:25 · 560 阅读 · 0 评论 -
程序员该有的艺术气质—SOLID原则
昨天Amazon在我们学校有场讲座,主要是跟我们分享一些经验:作为一个程序员该有的编码硬技术和工作软技术。当然他们也有来我们学校招聘人才的目的,想要吸引我们去他们公司,于我而言,这么牛逼的一个公司我当然特别想去啦,这场讲座我是必听无疑,的确学到了一些知识。没有过实际项目的在校生往往不能写出漂亮的代码(包括编码规范、注释、设计模式、性能等等),因为他们更多注重的正确性,只要结果出来了且是...转载 2018-06-28 12:07:18 · 168 阅读 · 0 评论