摘要: 阅读全文
posted @ 2020-02-09 21:07 lakeslove 阅读(313) 评论(0) 推荐(0) 编辑
摘要: 建议你搭建发号器服务来生成全局唯一的 ID。 怎么不用UUID? 因为在系统设计时,ID 有可能成为排序的字段。 ID 有序也会提升数据的写入性能。 不能作为 ID 的另一个原因是它不具备业务含义 最后,UUID 是由 32 个 16 进制数字组成的字符串,如果作为数据库主键使用比较耗费空间。 Sn 阅读全文
posted @ 2020-02-09 20:12 lakeslove 阅读(485) 评论(0) 推荐(0) 编辑
摘要: 数据库的写入请求量大造成的性能和可用性方面的问题,要解决这些问题,你所采取的措施就是对数据进行分片。这样可以很好地分摊数据库的读写压力,也可以突破单机的存储瓶颈,而常见的一种方式是对数据库做“分库分表”。 数据库分库分表的方式有两种:一种是垂直拆分,另一种是水平拆分。这两种方式,在我看来,掌握拆分方 阅读全文
posted @ 2020-02-09 17:17 lakeslove 阅读(354) 评论(0) 推荐(0) 编辑
摘要: 依据一些云厂商的 Benchmark 的结果,在 4 核 8G 的机器上运 MySQL 5.7 时,大概可以支撑 500 的 TPS 和 10000 的 QPS 那么你可能会说,是不是我无限制地增加从库的数量就可以抵抗大量的并发呢?实际上并不是的。因为随着从库数量增加,从库连接上来的 IO 线程比较 阅读全文
posted @ 2020-02-09 16:51 lakeslove 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 一般在线上我建议最小连接数控制在 10 左右,最大连接数控制在 20~30 左右即可。 阅读全文
posted @ 2020-02-09 16:22 lakeslove 阅读(341) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2020-02-09 16:05 lakeslove 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 高可扩展性的设计思路 拆分是提升系统扩展性最重要的一个思路,它会把庞杂的系统拆分成独立的,有单一职责的模块。相对于大系统来说,考虑一个一个小模块的扩展性当然会简单一些。将复杂的问题简单化,这就是我们的思路。 其实就是微服务 系统的易扩展之从存储和业务拆分来考虑。业务拆分是容易理解的,专人专事;从存储 阅读全文
posted @ 2020-02-09 15:45 lakeslove 阅读(406) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2020-02-09 15:27 lakeslove 阅读(345) 评论(0) 推荐(0) 编辑
摘要: 提到互联网系统设计,你可能听到最多的词儿就是“三高”,也就是“高并发”“高性能”“高可用”,它们是互联网系统架构设计永恒的主题。 阅读全文
posted @ 2020-02-09 15:08 lakeslove 阅读(369) 评论(0) 推荐(0) 编辑
摘要: 那我们要如何做呢?参照阿里发布的《阿里巴巴 Java 开发手册 v1.4.0(详尽版)》,我们可以将原先的三层架构细化成下面的样子: 我来解释一下这个分层架构中的每一层的作用。 分层架构的不足: 最主要的一个缺陷就是增加了代码的复杂度。 单一职责原则规定每个类只有单一的功能,在这里可以引申为每一层拥 阅读全文
posted @ 2020-02-09 09:41 lakeslove 阅读(329) 评论(0) 推荐(0) 编辑