架构设计之「数据库从主备到主主的高可用方案」

在互联网项目中,当业务规模越来越大,数据越来越多,随之而来的就是数据库压力会越来越大。慢慢就会发现,数据库层可能已经成为了整个系统的关键点和性能瓶颈了,因此实现数据层的高可用就成为了我们项目中经常要解决的问题。

本文我们就来聊一聊如何实现数据存储层的高可用方案。在保障数据层的高性能与高稳定方面,最容易想到的方式就是对数据进行分片、多份、冗余等,很多架构的本质其实也是基于这几点来实现的。

这里先不看细节,即先不管底层数据源是什么数据库,我们先只聊架构方案,因为无论底层是关系型数据库,还是NoSQL数据库,无论是 Mysql 还是 RedisMongoDB,我们在架构设计上都是相通[……]

查看更多……

聊聊Linux 五种IO模型

上一篇《聊聊同步、异步、阻塞与非阻塞》已经通俗的讲解了,要理解同步、异步、阻塞与非阻塞重要的两个概念点了,没有看过的,建议先看这篇博文理解这两个概念点。在认知上,建立统一的模型。这样,大家在继续看本篇时,才不会理解有偏差。

那么,在正式开始讲Linux IO模型前,比如:同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的。所以先限定一下本文的上下文。

1 概念说明#

在进行解释之前,首先要说明几个概念:

用户空间和内核空间

进程切换

进程的阻塞

文件描述符

缓存 IO

1.1 用户空间与内核空间##

现在操[……]

查看更多……

聊聊同步、异步、阻塞与非阻塞

近来遇到了一些常见的概念,尤其是网络编程方面的概念,如:阻塞、非阻塞、异步I/O等等,对于这些概念自己也没有太清晰的认识,只是很模糊的概念,说了解吧也了解,但是要让自己准确的描述概念方面的具体细节,却说的不那么准确,这也是自己在这几个方面也没有细细考究过的原因吧。经过看了些这几个概念的资料,发现同步、异步、阻塞、非阻塞的概念其实也并不难以理解,在此写下此文,欢迎拍砖,希望多多交流。

1 同步与异步#

首先来解释同步和异步的概念,这两个概念与消息的通知机制有关。也就是同步与异步主要是从消息通知机制角度来说的。

1.1 概念描述##

所谓同步就是一个任务的完成需要依赖另外一[......]

查看更多......

spotbugs源码学习&添加安全规则

因为帮我内推阿里的师傅告诉我以后可能要做源码审计的工作,先学习一下spotbugs和find-sec-bugs的扫描规则实现,并且尝试添加一个规则。

添加扫描规则主要是继承Detector,本文介绍以下几种主要的Detector:

OpcodeStackDetector

检查每一个Java虚拟机操作码(继承其中的sawOpcode(int seen)seen即操作吗int表示),其中可以获取调用的方法名——getNameConstantOperand(),获取调用者——getClassConstantOperand(),获取函数调用的参数——stack.getStackIt[......]

查看更多......

JavaScript 正则表达式匹配汉字

2018年1月27日

一个可能有 20 年历史的正则表达式

在谷歌搜索「JavaScript 正则表达式匹配汉字」的时候,前几条结果全都是/[\u4e00-\u9fa5]/。没有人怀疑这个正则表达式有什么问题,那么在 2018 年的今天,让我们站在 Chrome 64 的肩膀上,放飞一下自我。

汉文(Han Script)是汉语、日本语、朝鲜语、韩国语的书写系统中的一种文字(Script),越南语在早期也曾在书写系统中使用汉文1。汉字(CJK Ideograph)是汉文的基本单元。各国都对汉字提出了自己的编码标准,Unicode 将这些标准加总在一起进行统一编码,力求实现[……]

查看更多……

正则验证姓名否中文(包含生僻字)

1.常见的中文 \u4e00-\u9fbb 和 \u4e00-\u9fa5 (不包含生僻字)

2.比较广泛的中文汉字。(包含了咱们需要的生僻字 和 不需要的很多字符 比如 中文句号分号逗号、书名号 等等) \u2E80-\uFE4F

3.CJK标点符号 
范围:\u3000-\u303F 
参考地址:http://www.unicode.org/charts/PDF/U3000.pdf

根据以上三点,我们要用第二个再排除第三个,所以判断是否包含生僻字的中文姓名的正则表达式如下所示:

[……]

查看更多……

Sqlserver查看内存使用情况

 转载:https://www.cnblogs.com/xcsn/p/7766843.html

SQL SERVER内存按存放数据的类型,大概可以分为三类:

1、buffer pool,存放数据页面的缓冲区,sql server数据都是存放在一个个8K的页面里,当用户需要使用这个页面上的数据时,都是把整个页面加载到内存的buffer pool区缓存起         来。

2、各类consumer:

      connect:SQL SERVER为每一个客户端连接分配一块内存,用来存储连接[……]

查看更多……

数字签名和数字证书的原理解读(图文)

数字签名和数字证书的区别是什么?数字证书是由权威机构CA证书授权中心发行的,能提供在Internet上进行身份验证的一种权威性电子文档。而数字签名是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。对于数字签名和数字证书的运用原理,相信有不少朋友还不清楚,下文将为大家解疑答惑。

数字签名和数字证书原理

1. 鲍勃有两把钥匙,一把是公钥,另一把是私钥。

  2. 鲍勃把公钥送给他的朋友们—-帕蒂、道格、苏珊—-每人一把。

  3. 苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的[……]

查看更多……

一文教会你数据库性能调优(附某大型医院真实案例)

 微软工程师的一个工程师曾经对性能调优有一个非常形象的比喻:剥洋葱 。我也非常认可,让我们来一层一层拨开外面它神秘的面纱。

六大因素

下面祭出的是我们在给客户分析数据库性能问题最常用的图。

看完这个图,你是不是对性能调优有了个基本的概念了.通常来讲我们会依照下面的顺序来进行分析:

硬件能力

系统规模

数据库内部因素

软件环境

这4个的顺序可以有所调整或者交换,但是对于系统的性能优化一定要从全局出发切勿一来就深入到某一个SQL语句的优化,因为可能你花费大量的

时间吧一个SQL从20s 优化到1s,但是整个系统的卡慢仍然存在[……]

查看更多……