微服务架构核心(三)- 微服务技术架构体系

微服务架构的名字里虽然有个”微”,但它涉及的整体架构体系可一点也不”微”,微服务架构除了业务代码的开发以外,还需要很多的支撑服务。

每个公司都有自己的微服务架构体系,虽然在细节上有很多不同,但是整体的思路是类似的,下图展示了一个比较成熟的微服务架构体系。

点我阅读更多...

微服务架构核心(二)- 微服务的利与弊

不知道你有没有这样的感受,新系统在前期调研架构的时候,大家都希望优先选择微服务架构,好像一个系统不是微服务架构就OUT了一样。

但是真正的架构设计,并不是哪个架构流行就选哪个,那是要遵循简单、合适、扩展的原则。

所以在选择微服务架构之前,我们应该仔细衡量它的利与弊,分析微服务架构究竟能为系统带来什么优势,同时又会新增哪些挑战。

点我阅读更多...

分布式系统设计-CAP定理

CAP的定义

CAP定理(CAP theorem)又被称作布鲁尔定理(Brewer’s theorem),是分布式系统设计中最基础、最重要的理论,它的意思是对于一个分布式计算系统来说,不可能同时满足以下三点条件:

  • 一致性(Consistency):每次读取要么获得最近写入的数据,要么获得一个错误。
  • 可用性(Availability):每次请求都能获得一个(非错误)响应,但不保证获得的数据为最新数据。
  • 分区容错性(Partition tolerance):尽管任意数量的消息被节点间的网络丢失(或延迟),系统仍继续运行。

这三个条件的核心都是数据,数据是否一致,数据是否可用,数据是否做了分区容错。

点我阅读更多...

计算机原理-浮点数存储

1、精度丢失

作为程序员大家应该都遇到过下面这种情况,用浮点数做运算,发现结果与预期有偏差,比如下面的JAVA代码

public static void main( String[] args )
    {
    	 int i = 3;
    	 float j = 0.9f;
    	 System.out.println("3乘以0.9的结果是:" + i*j);
    }

用一个整数3乘以浮点数0.9,期望结果是2.7,实际结果却是

20180227004

与2.7相差0.0000002,这道连小学生都不会算错的题目,为什么计算机会算错?真正的原因要从计算机保存浮点数的底层原理说起。

点我阅读更多...

自建服务器翻墙傻瓜教程

我的经历

蓝灯/云梯

一开始我会选择一些收费的VPN,比如蓝灯云梯,优点是使用简单省心,交了钱,连上服务商提供的国外服务器,就可以翻墻了。

缺点是速度和稳定性一般般,上网速度很不稳定,服务器也经常出现一次连接不上,得多次重复连接的情况。最讨厌的是遇到敏感时期,比如最近的拾酒大,服务器就开始各种抽风,甚至连不上,非常影响使用体验。

就拿我现在用的云梯来说,已经抽风了大半个月,期间完全无法使用,服务商也没有任何解释。

点我阅读更多...

兩步验证的原理

被盗号

“您的账号密码有误,请重新输入”

小卢盯着电脑屏幕看了5分钟,心里纳闷,昨天还能登录,怎么今天就密码错误了,难不成我被盗号了?想到这里,小卢赶紧给自己的程序员好友小王打电话。

小卢:“小王,我在XX网站的账号被盗了!” 小王:“确定被盗了?赶紧把密码找回来。还有,你在其它网站的账号有没有被盗?“ 小卢:“试过了,账号密码是一样的,好多都登录不上……” 小王:“哎,事到如今,只能事后补救了。不过把所有网站的账号密码都设置成一样的,很不安全啊。” 小卢:“还不是图个省事嘛,现在网站那么多,要是每个的密码都不一样,太难记了。” 小王:“没关系,我有一个安全神器,现在传授给你,即使所有网站密码都是一样的,也可以避免一窝端。” 小卢:”是什么?赶紧告诉我!“ 小王:”两步验证。“

点我阅读更多...

集中式缓存

这篇文章我们继续聊聊《深入分布式缓存:从原理到实践》中关于集中式缓存的部分。

集中式缓存的基本概念,我在前面的文章 本地缓存 中已经有过介绍,相对于本地缓存,集中式缓存主要有以下几个优点:

  • 保证缓存数据的一致性。集中式缓存的数据是集中管理的,这样就能保证所有应用服务器取到的数据时一致的。
  • 更方便的数据扩容。当缓存数据过多需要扩容时,可以对缓存服务器进行水平扩展。
  • 应对单点故障。如果采用分布式的方式部署缓存服务器,当某一台缓存服务器出现故障时,其它缓存服务器仍然可用。
点我阅读更多...