《从0开始学架构》——可扩展:基本思想、模式、分层架构、SOA

本系列是极客时间《从0开始学架构》的读书笔记。 一、可扩展架构的基本思想与模式 对应《32 | 可扩展架构的基本思想和模式》 软件系统相对于硬件来说,具有可扩展性。一个软件不停地扩展,说明它本身充满了活力。我们经常将软件架构类比为建筑图纸,将开发软件类比为工程施工。这个类比有一个不协调的地...

2018-12-16 22:51:04

阅读数 27

评论数 0

《从0开始学架构》——高可用:异地多活和接口级故障

本系列是极客时间《从0开始学架构》的读书笔记。 一、异地多活 对应《28 | 业务高可用的保障:异地多活架构》《29 | 异地多活设计4大技巧》《30 | 异地多活设计4步走》 在上一篇提到过,如果部分节点的故障是地理级别的话,最好做数据分区备份架构。但是,由于备份系统正常情况下是不对外提...

2018-11-22 16:01:52

阅读数 137

评论数 0

《从0开始学架构》——高可用:存储高可用和计算高可用

本系列是极客时间《从0开始学架构》的读书笔记。 如果部分节点出现故障了,通过冗余可以提高可用性。若故障是数据无法访问,对应的就是存储高可用架构;若故障是计算失败,对应的就是计算高可用架构。 一、存储高可用架构 对应《25 | 高可用存储架构:双机架构》《26 | 高可用存储架构:集群和分区》...

2018-11-12 22:37:56

阅读数 71

评论数 0

《从0开始学架构》——高可用:CAP理论和FMEA方法

本系列是极客时间《从0开始学架构》的读书笔记。 接下来就是高可用部分了。 一般来讲,相对于高性能来说,高可用的复杂度更高,因为高可用的异常情况太多,只要稍有疏漏,就会埋下隐患。当然只是对一般情况而言。 对于高性能来讲,有一种方法是采用集群,来将海量请求分发到不同的机器上,从而提高性能。相对应的...

2018-11-11 21:32:03

阅读数 262

评论数 0

《从0开始学架构》——高性能架构模式

本系列是极客时间《从0开始学架构》的读书笔记。 很多情况下,高性能设计的核心就是存储系统的设计,而关系型数据库由于ACID特性和强大的SQL功能,是存储系统的核心部分。 一、高性能数据库 由于互联网的发展,海量数据的出现,数据库的发展远远跟不上业务,所以现在数据库的高性能需要通过集群来实现。 ...

2018-11-02 14:27:48

阅读数 46

评论数 0

《从0开始学架构》——架构设计的原则与流程

本系列是极客时间《从0开始学架构》的读书笔记。 我们已经知道了架构设计的定义、历史源流、来源等等背景知识。 一、三原则 对应《08 | 架构设计三原则》 既然架构设计关键在于取舍,那取舍的依据原则是什么? 作者提出了三条原则:合适、简单、演化。合适优于业界领先。简单优于复杂。演化优于一步到...

2018-10-31 16:11:06

阅读数 870

评论数 0

《从0开始学架构》——架构设计的复杂度来源

本系列是极客时间《从0开始学架构》的读书笔记。 既然架构设计也是一种为了解决高复杂度问题的方案,那这些高复杂度问题从何而来呢? 一、高性能 对应《04 | 复杂度来源:高性能》 主要体现在两方面:单机复杂度和集群复杂度。 在单台机器上,为了高性能,先后出现了批处理系统、分时系统、并行系统。...

2018-10-29 22:29:31

阅读数 77

评论数 0

《从0开始学架构》——什么是架构设计

本系列是极客时间《从0开始学架构》的读书笔记。 一、什么是架构 对应《01|架构到底是指什么?》 作者首先梳理了系统和子系统、模块和组件、架构和框架这些概念的区别和联系。评论区有位说得很明白: 架构是顶层设计;框架是面向编程或配置的半成品;组件是从技术维度上的复用;模块是从业务维度上职责...

2018-10-29 22:28:50

阅读数 47

评论数 0

对文本使用tf_idf算法进行分析的项目记录(二)

上回写的是使用消息队列来做这个项目,这次完全抛弃了它。 为什么抛弃呢? 我当初设想的是,步骤很明确,完全可以独立开,这样消息队列正好适配。 但是,我对处理速度和吞吐量没有明确的概念,导致如果用之前的方案的话,屈屈30w文章就能跑上好几天。 为什么会这么慢呢? 原因一,处理的个...

2018-09-08 22:00:01

阅读数 77

评论数 0

使用rabbitmq对文本使用tf_idf算法进行分析的项目记录

之前用爬虫爬了三个源,共爬取了30w左右的博客,爬虫项目:itmap_spiders。 接着对这些文本进行分析,要求是找出每篇文章的关键词。我对TF*IDF算法有一些了解,就选择了它。项目:itmap_data_analysis。 业务架构 由于数据量有点大,所以使用消息队列进行拆分,拆...

2018-09-02 17:45:49

阅读数 40

评论数 0

使用rabbitmq对文本使用tf_idf算法进行分析的项目记录

之前用爬虫爬了三个源,共爬取了30w左右的博客,爬虫项目:itmap_spiders。 接着对这些文本进行分析,要求是找出每篇文章的关键词。我对TF*IDF算法有一些了解,就选择了它。项目:itmap_data_analysis。 业务架构 由于数据量有点...

2018-09-02 17:42:00

阅读数 37

评论数 0

python list 删除元素

以num_list = [1, 2, 2, 3, 4, 5]为例。 删除一个可以确定的元素,一共有三种方法。 1. num_list.remove(2),会删除第一个值为2的元素。 2. num_list.pop(1),会弹出索引为1的元素,若不传参数,则弹出最后一个元素。 3. del ...

2018-08-08 16:10:49

阅读数 42

评论数 0

python list 删除元素

以num_list = [1, 2, 2, 3, 4, 5]为例。 删除一个可以确定的元素,一共有三种方法。 num_list.remove(2),会删除第一个值为2的元素。 num_list.pop(1),会弹出索引为1的元素,若不传参数,则弹出最...

2018-08-08 16:10:00

阅读数 29

评论数 0

[总结]python逐行性能分析

总是忘记,做个记录。 性能定义 一般而言,处理一个请求的速度是一个重要的性能指标(Latency, 系统延迟)。 观察工具 有时候不需要特殊工具,直接看一个http请求的时长即可。 定位瓶颈 line_profiler是一个可以查看每行代码的执行次数、执行时间的工具。 安...

2018-08-02 17:35:17

阅读数 96

评论数 0

[总结]python逐行性能分析

总是忘记,做个记录。 性能定义 一般而言,处理一个请求的速度是一个重要的性能指标(Latency, 系统延迟)。 观察工具 有时候不需要特殊工具,直接看一个http请求的时长即可。 定位瓶颈 line_profiler是一个可以查看每行代码的执行次数、执行...

2018-08-02 17:34:00

阅读数 41

评论数 0

[提炼&总结]账户系统的设计

最简单 一般而言,系统内都会有用户模块,如果涉及到钱、积分、兑换券之类的,那么最好搞一套账户模块。 简单的账户模块分为两部分,账户和流水记录。 在这种简单的模块内,典型的场景是用户做了某个操作,达到了预设条件,于是系统给予奖励,生成一条流水记录,该用户的账户内的金额也随之增加。用户也可以...

2018-07-30 16:06:58

阅读数 623

评论数 0

[提炼&总结]账户系统的设计

最简单 一般而言,系统内都会有用户模块,如果涉及到钱、积分、兑换券之类的,那么最好搞一套账户模块。 简单的账户模块分为两部分,账户和流水记录。 最简单的账户模块 在这种简单的模块内,典型的场景是用户做了某个操作,达到了预设条件,于是系统给予奖...

2018-07-30 16:05:00

阅读数 110

评论数 0

[提炼&总结]ORM连接ODM

ORM:Object Relational Mapping。比较著名的有Django的ORM,SQLAlchemy。 ODM:Object Document Mapping,本质也属于一种ORM,不过是基于MongoDB、Redis这种NoSQL的。这个词我感觉并不是业界通用的,首先在搜索引擎上...

2018-07-27 11:42:50

阅读数 131

评论数 0

[提炼&总结]ORM连接ODM

ORM:Object Relational Mapping。比较著名的有Django的ORM,SQLAlchemy。 ODM:Object Document Mapping,本质也属于一种ORM,不过是基于MongoDB、Redis这种NoSQL的。这个词...

2018-07-27 11:39:00

阅读数 44

评论数 0

调整Django菜单顺序

不修改Django源码让admin中的Model列表按注册顺序显示 from django.contrib import admin from django.utils.text import capfirst from django.utils.datastructures import O...

2018-07-17 18:13:00

阅读数 604

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭