
系统架构
文章平均质量分 66
南北雪树
有一种中午叫 16:00,我在等待着......
展开
-
Redis开发与运维总结(一)
一、持久化二、复制三、阻塞情况四、内存管理五、Redis Cluster 5.1、数据分布理论 5.2、Redis数据分区 5.3、通信流程 5.3.1、Gossip消息 5.3.2、节点选择 5.4、请求路由 5.4.1、计算槽 5.4.2、槽节...原创 2019-10-17 20:56:46 · 816 阅读 · 0 评论 -
Mysql集群和一主多从之后如何分库分表的方案实现(三)
4-3、使用MyCat配置横向拆分之前文章中我们介绍了如何使用MyCat进行读写分离,类似的关系型数据库的读写分离存储方案可以在保持上层业务系统透明度的基础上满足70%业务系统的数据承载规模要求和性能要求。比起单纯使用LVS + Replicaion的读写分离方案而言最大的优势在于更能增加对上层业务系统的透明性。当然如果 您觉得单个MyCat节点在高可用范畴或者性能范畴上还需要增强,还转载 2017-12-13 11:15:05 · 6546 阅读 · 0 评论 -
系统间通信方式之(Kafka的实际使用场景和使用方案三)(二十五)
5-7、解决方案三:非侵入式方案以上两种方案中为了让业务系统能够集成日志采集功能,我们或多或少需要在业务系统端编写一些代码。虽然通过一些代码结构的设计,可以减少甚至完全隔离这些代码和业务代码的耦合度,但是毕竟需要业务开发团队花费精力对这些代码进行维护,业务系统部署时业务对这些代码的配置信息做相应的调整。这里我们再为读者介绍一种非侵入式的日志采集方案。我们都知道业务系统被访问时,都会转载 2017-11-23 14:26:45 · 2195 阅读 · 0 评论 -
系统间通信方式之(Kafka的实际使用场景和使用方案二)(二十四)
5-3、解决方案二:改进半侵入式方案5-3-1、解决方法一的问题所在方案一并不是最好的半侵入式方案,却容易理解架构师的设计意图:至少做到业务级隔离。方案一最大的优点在于日志采集逻辑和业务处理逻辑彼此隔离,当业务逻辑发生变化的时候,并不会影响日志采集逻辑。但是我们能为方案一列举的问题却可以远远多于方案一的优点:需要为不同开发语言分别提供客户端API包。上文中我转载 2017-11-23 11:43:33 · 1462 阅读 · 0 评论 -
系统间通信方式之(Kafka的实际使用场景和使用方案)(二十三)
5、场景应用——电商平台:浏览记录收集功能事件/日志收集系统是大中型软件不得不面对的话题。目前第三方业务系统对 事件/日志收集系统 的集成思路主要有两大类:侵入式收集方案和非侵入式收集方案。侵入式收集方案,是指任何需要使用事件/日志收集系统的第三方系统,都需要做有针对的编码工作,这个编码工作或者是新增代码用于调用 事件/日志收集系统 提供的客户端API,又或者是修改已有的代码,以便适应事件转载 2017-11-23 09:45:06 · 2135 阅读 · 0 评论 -
系统间通信方式之(ActiveMQ的集群方案介绍结束2之高潮部分了【(1master+2slave)*cluster】)(十九)
转载:http://blog.youkuaiyun.com/lifetragedy/article/details/51869032ActiveMQ的集群 内嵌代理所引发的问题:消息过载管理混乱如何解决这些问题——集群的两种方式:Master slave Broker clustersActiveMQ的集群有两种方式:MA转载 2017-11-17 10:16:30 · 702 阅读 · 0 评论 -
系统间通信方式之(ActiveMQ的集群方案介绍结束)(十八)
3、ActiveMQ热备方案ActiveMQ热备方案,主要保证ActiveMQ的高可用性。这种方案并不像上节中我们主要讨论的ActiveMQ高性能方案那样,同时有多个节点都处于工作状态,也就是说这种方案并不提高ActiveMQ集群的性能;而是从集群中的多个节点选择一个,让其处于工作状态,集群中其它节点则处于待命状态。当主要的工作节点由于各种异常情况停止服务时,保证处于待命的节点能够无缝接替转载 2017-11-16 11:29:04 · 2682 阅读 · 0 评论 -
系统间通信方式之(ActiveMQ的集群方案介绍上)(十七)
1、综述通过之前的文章,我们讨论了ActiveMQ的基本使用,包括单个ActiveMQ服务节点的性能特征,关键调整参数;我们还介绍了单个ActiveMQ节点上三种不同的持久化存储方案,并讨论了这三种不同的持久化存储方案的配置和性能特点。但是这还远远不够,因为在生产环境中为了保证让我们设计的消息服务方案能够持续工作,我们还需要为消息中间件服务搭建集群环境,从而在保证消息中间件服务可靠性和处理转载 2017-11-15 22:32:07 · 772 阅读 · 0 评论 -
系统间通信方式之(ActiveMQ的使用性能优化之冰火两重天5)(十六)
7、ActiveMQ的持久消息存储方案前文已经讲过,当ActiveMQ接收到PERSISTENT Message消息后就需要借助持久化方案来完成PERSISTENT Message的存储。这个介质可以是磁盘文件系统、可以是ActiveMQ的内置数据库,还可以是某种外部提供的关系型数据库。本节笔者将向读者讲解三种ActiveMQ推荐的存储方案的配置使用。如上图2.1的转载 2017-11-15 18:30:28 · 3341 阅读 · 0 评论 -
系统间通信方式之(ActiveMQ的使用性能优化之干柴烈火4)(十五)
6、ActiveMQ处理规则和优化在ActiveMQ单个服务节点的优化中,除了对ActiveMQ单个服务节点的网络IO模型进行优化外,生产者发送消息的策略和消费者处理消息的策略也关乎整个消息队列系统是否能够高效工作。请看下图所示的消息生产者和消息消费者的简要工作原理图:Producer既是消息生产者,作为一个发送消息的客户端它既可以使用同步消息发送模式,也可以使用异转载 2017-11-15 15:23:29 · 523 阅读 · 0 评论 -
系统间通信方式之(ActiveMQ的使用性能优化3)(十四)
3、ActiveMQ性能优化思路上篇文章中的两节内容,主要介绍消息中间件ActiveMQ的安装和基本使用。从上篇文章给出的安装配置和示例代码来看,我们既没有修改ActivieMQ服务节点的任何配置,也没有采用任何的集群方案。这种情况只适合各位读者熟悉ActiveMQ的工作原理和基本操作,但是如果要将ActivieMQ应用在生产环境下,上文中介绍的运行方式远远没有挖掘出它的潜在性能。转载 2017-11-14 22:44:56 · 1986 阅读 · 0 评论 -
系统间通信方式之(ActiveMQ的基础使用参数详解2)(十三)
先来一个使用ActiveMQ的一般基本配置基础类/** * @author whb * @date 2017年11月14日 下午6:35:03 * @Description: ActiveMQ消息配置 */public class ActiveMQConfig { private int sessionCacheSize = 20; private String brok原创 2017-11-14 19:06:28 · 1921 阅读 · 0 评论 -
系统间通信方式之(ActiveMQ的基础使用详细介绍1)(十二)
1、前言之前我们通过两篇文章(架构设计:系统间通信(19)——MQ:消息协议(上)、架构设计:系统间通信(20)——MQ:消息协议(下))从理论层面上为大家介绍了消息协议的基本定义,并花了较大篇幅向读者介绍了三种典型的消息协议:XMPP协议、Stomp协议和AMQP协议。本小节开始,我们基于之前的知识点讲解这些协议在具体的“消息队列中间件”中是如何被我们操作的。由于本人在实际工作中经常使用转载 2017-11-14 17:34:24 · 1050 阅读 · 0 评论 -
系统间通信方式之(基于DUBBO的详细介绍)(十一)
偷懒了,详细的文章链接如下:服务治理与DUBBO介绍1、http://blog.youkuaiyun.com/yinwenjie/article/details/50113139服务治理与DUBBO介绍2、http://blog.youkuaiyun.com/yinwenjie/article/details/50193987服务治理与DUBBO介绍3、http://blog.youkuaiyun.com/yin转载 2017-11-14 11:43:24 · 395 阅读 · 0 评论 -
使用git将项目上传到github的方法
首先你需要一个github账号,所有还没有的话先去注册吧!https://github.com/我们使用git需要先安装git工具,这里给出下载地址,下载后一路直接安装即可:https://git-for-windows.github.io/1.进入Github首页,点击New repository新建一个项目 2.填写相应信息后点击create转载 2017-11-14 10:05:53 · 317 阅读 · 0 评论 -
Mysql集群和一主多从之后如何分库分表的路由规则详解(四)
4-6、主要分片规则上文提到MyCat的逻辑表支持多种分片规则,表现于schema配置文件中中table标签的rule属性。本节将以MyCat Version 1.6版为基础,介绍几种经常使用的分片规则,这些分片规则都通过rule.xml文件进行定义和配置。4-6-1、分片枚举sharding-by-intfile......tableRule name="sharding-转载 2017-12-14 21:55:18 · 5001 阅读 · 0 评论 -
一个获取国家地区最新数据的方法
缘由最近做一个小型微信商城,因为要用到省市区收货地址的原因(虽然之前整理过,但是数据太老了),所以上网搜了一下相关资料,结果找到的东西要么数据太老了,要么就是表是分开的(省市区存了三张表),索性自己动手。我们需要的是一个类似下面这样的数据结构,区域ID,上级ID,区域名称,等级,排序,状态建好表后,我们有很多解决方案去填充里面的数据1.做好后台UI,丢给运营去慢慢录入,是时转载 2018-01-11 19:59:43 · 2156 阅读 · 0 评论 -
git2consul使用踩过的坑
很久没有更新博客了,可能是最近比较忙了吧(这不能是借口!)。先说正事,最近项目中使用了consul的模块,对于consul的功能简介如下:服务发现Consul的客户端可用提供一个服务,比如 api 或者mysql ,另外一些客户端可用使用Consul去发现一个指定服务的提供者.通过DNS或者HTTP应用程序可用很容易的找到他所依赖的服务. 健康检查Consul客户端可用提供...原创 2019-08-21 14:01:00 · 1535 阅读 · 0 评论 -
基于timestamp和nonce的防重放攻击
以前总是通过timestamp来防止重放攻击,但是这样并不能保证每次请求都是一次性的。今天看到了一篇文章介绍的通过nonce(Number used once)来保证一次有效,感觉两者结合一下,就能达到一个非常好的效果了。重放攻击是计算机世界黑客常用的攻击方式之一,所谓重放攻击就是攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程。 首先要明确一个事情,重放...转载 2019-03-28 17:57:15 · 1506 阅读 · 1 评论 -
API关于TOKEN的使用
很久没写更新内容了,新的一年也开始了,是时候该把自己的东西整理一遍了。2018年也没少看书,但是真正属于自己的东西很少很少,或者学习的时候浅尝辄止,也是时候给自己清醒清醒了。 公司自己的项目是基于Spring Boot敏捷开发的,起初对于接口的鉴权等认证操作都很粗糙,网上也搜集了一下其他资料,总的来说。比较详细的鉴权的两种方式如下:其一是认证与鉴权,对于请求的用...原创 2019-01-08 19:52:37 · 5935 阅读 · 1 评论 -
关于PC,APP,H5等客户端访问后台时如何系统架构!!!
最近也是在自己的公司中,也确实碰到了这样的一个问题。我们系统一开始只有一个pc端使用,随着业务的扩展,需要添加APP,H5等客户端。此刻,我们我们内部就如何重新对我们自己的系统架构进行了梳理,最终确立了以下两种方案:1、PC,APP,H5等客户端还是访问原来的一个后台服务,这也是最简单,最省事的一种方式。但也是考虑了不少弊端,比如APP端流量突然上来之后,服务压力骤然增大,导致其他访问轻则变慢...原创 2018-12-15 18:17:08 · 4639 阅读 · 4 评论 -
ELK日志收集系统,看别人的,学习了
这里先简单介绍下什么是ELK。ELK(ElasticSearch, Logstash, Kibana),三者组合在一起搭建实时的日志分析平台。 1、 Elasticsearch 是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful 风格接口,多数据源,自动搜索负载等。 2、Logstash 是一个完全开源的工具,他可以对你的日志进行收集...转载 2018-10-29 11:11:52 · 4350 阅读 · 0 评论 -
Zookeeper学习中的疑难问题总结,很受用!
1、ZooKeeper是什么ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。 客户端的读请求可以被集群中的任意一台机器处理,如果读请求在节点上注册了监听器,这个监听器也是由所连接的z...原创 2018-10-25 16:29:30 · 2819 阅读 · 8 评论 -
Zookeeper的简单原理介绍以及分布式服务中的应用,都是干货!!!
安装和配置详解本文介绍的 Zookeeper 是以 3.2.2 这个稳定版本为基础,最新的版本可以通过官网 http://hadoop.apache.org/zookeeper/来获取,Zookeeper 的安装非常简单,下面将从单机模式和集群模式两个方面介绍 Zookeeper 的安装和配置。单机模式单机安装非常简单,只要获取到 Zookeeper 的压缩包并解压到某个目录如:/ho...原创 2018-08-30 11:08:03 · 488 阅读 · 0 评论 -
关于一致性哈希算法的简单讲解
传统的取模方式例如10条数据,3个节点,如果按照取模的方式,那就是node a: 0,3,6,9node b: 1,4,7node c: 2,5,8当增加一个节点的时候,数据分布就变更为node a:0,4,8node b:1,5,9node c: 2,6node d: 3,7总结:数据3,4,5,6,7,8,9在增加节点的时候,都需要做搬迁,成本太高一致性哈希方式最关键的区别就是,对节点和数据,...转载 2018-06-02 19:44:04 · 392 阅读 · 0 评论 -
分布式情况下如何获取全局唯一ID
系统唯一ID是我们在设计一个系统的时候常常会遇见的问题,也常常为这个问题而纠结。生成ID的方法有很多,适应不同的场景、需求以及性能要求。所以有些比较复杂的系统会有多个ID生成的策略。下面就介绍一些常见的ID生成策略。1. 数据库自增长序列或字段最常见的方式。利用数据库,全数据库唯一。优点:1)简单,代码方便,性能可以接受。2)数字ID天然排序,对分页或者需要排序的结果很有帮助。缺点:1)不同数据库...转载 2018-05-18 15:53:00 · 1037 阅读 · 0 评论 -
一个五年经验的Java工作经验深刻推荐的几本书
第一本:JAVA并发编程实践 《JAVA并发编程实践》随着多核处理器的普及,使用并发成为构建高性能应用程序的关键。Java 5以及6在开发并发程序中取得了显著的进步,提高了Java虚拟机的性能以及并发类的可伸缩性,并加入了丰富的新并发构建块。在《JAVA并发编程实践》中,这些便利工具的创造者不仅解释了它们究竟如何工作、如何使用,还阐释了创造它们的原因,及其背后的设计模式第二本:Sprin...原创 2018-04-18 14:42:13 · 9472 阅读 · 8 评论 -
开放接口/RESTful/Api服务的设计和安全方案详解
总体思路这个涉及到两个方面问题:一个是接口访问认证问题,主要解决谁可以使用接口(用户登录验证、来路验证)一个是数据数据传输安全,主要解决接口数据被监听(HTTPS安全传输、敏感内容加密、数字签名)用户身份验证:Token与Session开放接口Api服务其实就是客户端与服务端无状态交互的一种形式,这有点类似REST(Representational State Transfer)风格。普通网站应用...转载 2018-04-11 16:57:19 · 8812 阅读 · 0 评论 -
系统架构中,对于热点数据的处理
一 背景 某个业务线 商品开放开用户申请免费试用,当某个商品特别吸引人时,比如iPhone6 。肯定有一大波人为了少卖一个肾 疯狂去抢申请资格。有甚者利用机器人申请注册,于是简单的申请操作变成了秒杀行为. 大量请求同时更新数据库中的同一个商品的申请次数,update 操作给表加上行锁,导致后面的请求全部排队等待前面一个update完成,释放行锁后才能处理下一个请求。大量后来请求等待,占用...转载 2018-03-26 19:49:21 · 3905 阅读 · 0 评论 -
限流算法的理解和应用场景和实现[临界点处理]
在开发高并发系统时,有三把利器来保护系统:缓存、降级和限流。一下有几种限流的方法可以参考。信号量和令牌桶的区别: 信号量限制的是并发,资源. 令牌桶如果耗时比较高的话,并发可能会比较大. 限制的是 qps.计数器法计数器法是限流算法里最简单也是最容易实现的一种算法。比如我们规定,对于A接口来说,我们1分钟的访问次数不能超过100个。那么转载 2018-03-02 16:14:38 · 1390 阅读 · 0 评论 -
海量存储检索原理系列文章(都是精华)
海量存储检索原理系列文章作者:WhisperXD来源:http://qing.blog.sina.com.cn/whisperxdNov20海量存储之序言标签:海量存储检索原理今天玩微薄的时候有人问我有没有数据存储的相关资料,我想了想。。虽然在这个领域内也算有点积累,以前讲课的ppt有200多页,转载 2018-03-02 14:54:03 · 1108 阅读 · 0 评论 -
系统间通信方式之(RPC的基本概念)(十)
1、概述经过了详细的信息格式、网络IO模型的讲解,并且通过JAVA RMI的讲解进行了预热。从这篇文章开始我们将进入这个系列博文的另一个重点知识体系的讲解:RPC。在后续的几篇文章中,我们首先讲解RPC的基本概念,一个具体的RPC实现会有哪些基本要素构成,然后我们详细介绍一款典型的RPC框架:Apache Thrift。接下来我们聊聊服务治理和DUBBO服务框架。最后总结一下如何在实际工作转载 2017-11-13 22:18:10 · 8115 阅读 · 0 评论 -
系统间的通信方式之(Java RMI方式详解下)(九)
接上文《架构设计:系统间通信(8)——通信管理与RMI 上篇》。之前说过,JDK中的RMI框架在JDK1.1、JDK1.2、JDK1.5、JDK1.6+几个版本中做了较大的调整。以下我们讨论的RMI工作原理都是基于JDK1.6+版本的。3、JAVA RMI 工作原理通过上面的两组代码,我们大概知道了RMI框架是如何使用的。下面我们来讲解一下RMI的基本原理。本人翻阅网上的众多RMI资料基本...转载 2017-11-13 21:02:28 · 1839 阅读 · 1 评论 -
系统间通信方式之(Java之RMI初步使用详解)(八)
1、概述在概述了数据描述格式的基本知识、IO通信模型的基本知识后。我们终于可以进入这个系列博文的重点:系统间通信管理。在这个章节我将通过对RMI的详细介绍,引出一个重要的系统间通信的管理规范RPC,并且继续讨论一些RPC的实现;再通过分析PRC的技术特点,引出另一种系统间通信的管理规范ESB,并介绍ESB的一些具体实现。最后我们介绍SOA:面向服务的软件架构。2、RMI基本使用转载 2017-11-13 18:01:13 · 1422 阅读 · 0 评论 -
SpringBoot的定时任务两种(Spring Schedule 与 Quartz 整合 )实现
前言最近在项目中使用到定时任务,之前一直都是使用Quartz 来实现,最近看Spring 基础发现其实Spring 提供 Spring Schedule 可以帮助我们实现简单的定时任务功能。下面说一下两种方式在Spring Boot 项目中的使用。Spring Schedule 实现定时任务Spring Schedule 实现定时任务有两种方式 1. 使用XML配置定时转载 2017-05-04 09:51:58 · 10633 阅读 · 4 评论 -
系统间通信:基于TCP协议的RPC实现范例
系统间通信:基于TCP协议的RPC实现范例一、RPC名词解释 RPC的全称是Remote Process Call,即远程过程调用,它应用广泛,实现方式也很多,拥有RMI、WebService等诸多成熟的方案,在业界得到了广泛的使用。单台服务的处理能力受到硬件成本的限制,不可能无限制地提升。RPC将原来的本地调用转变为调用远端的服务器上的方法,给系统的处理能力和吞吐转载 2017-05-11 14:35:22 · 672 阅读 · 0 评论 -
性能调优攻略
很好,学习了。关于性能优化这是一个比较大的话题,在《由12306.cn谈谈网站性能技术》中我从业务和设计上说过一些可用的技术以及那些技术的优缺点,今天,想从一些技术细节上谈谈性能优化,主要是一些代码级别的技术和方法。本文的东西是我的一些经验和知识,并不一定全对,希望大家指正和补充。在开始这篇文章之前,大家可以移步去看一下酷壳以前发表的《代码优化概要》,这篇文章基本上告诉你——要进行转载 2017-04-06 15:56:01 · 430 阅读 · 0 评论 -
基于Spring的实现数据库读写分离
下面是我参考的文档,后面我直接上代码实现。现在大型的电子商务系统,在数据库层面大都采用读写分离技术,就是一个Master数据库,多个Slave数据库。Master库负责数据更新和实时数据查询,Slave库当然负责非实时数据查询。因为在实际的应用中,数据库都是读多写少(读取数据的频率高,更新数据的频率相对较少),而读取数据通常耗时比较长,占用数据库服务器的CPU较多,从而影响用户体验。我们通原创 2017-02-16 11:07:35 · 453 阅读 · 0 评论 -
Nginx和Tomcat结合使用负载均衡配置
Nginx+tomcat是目前主流的Java web架构,如何让nginx+tomcat同时工作呢,也可以说如何使用nginx来反向代理tomcat后端均衡呢?直接安装配置如下:1、Java JDK安装:#下载相应的jdk软件包,然后解压安装,我这里包名称为:jdk-7u25-linux-x64.tar.gz tar -xzf jdk-7u25-linux-x64.tar转载 2017-01-19 12:04:18 · 441 阅读 · 0 评论 -
如何通过最大用户并发数来确定系统最大用户数
作者:王小王链接:https://www.zhihu.com/question/39608108/answer/82173112来源:知乎著作权归作者所有,转载请联系作者获得授权。顺便学习一下了。这篇文章解决了很多用户的难题,就是如何通过最大用户并发数来确定系统最大用户数,因为这个问题不解决的话,用户很难挑选到最为适合自身系统的服务器,我们来看看这篇文章。以下是作者转载 2017-02-09 15:15:04 · 8180 阅读 · 3 评论