Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
晶之木
advanced-java
提交
0837db82
A
advanced-java
项目概览
晶之木
/
advanced-java
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
advanced-java
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
0837db82
编写于
12月 01, 2018
作者:
Y
yanglbme
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
docs(architect): add e-commerce-website-detail-page-architecture.md
电商网站的商品详情页系统架构
上级
14e4cc03
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
26 addition
and
6 deletion
+26
-6
README.md
README.md
+2
-1
docs/high-availability/e-commerce-website-detail-page-architecture.md
...ailability/e-commerce-website-detail-page-architecture.md
+19
-0
docs/high-availability/hystrix-introduction.md
docs/high-availability/hystrix-introduction.md
+5
-5
img/e-commerce-website-detail-page-architecture-1.png
img/e-commerce-website-detail-page-architecture-1.png
+0
-0
img/e-commerce-website-detail-page-architecture-2.png
img/e-commerce-website-detail-page-architecture-2.png
+0
-0
未找到文件。
README.md
浏览文件 @
0837db82
...
@@ -6,7 +6,7 @@
...
@@ -6,7 +6,7 @@
本系列知识出自中华石杉,我对这部分知识做了一个系统的整理,方便学习查阅。
本系列知识出自中华石杉,我对这部分知识做了一个系统的整理,方便学习查阅。
😄
可以关注石杉老师的微信公众号:
**石杉的架构笔记**
@shishan100,有很多干货噢~
可以关注石杉老师的微信公众号:
**石杉的架构笔记**
@shishan100,有很多干货噢~
## [分布式系统](/docs/distributed-system/distributed-system-interview.md)
## [分布式系统](/docs/distributed-system/distributed-system-interview.md)
...
@@ -80,6 +80,7 @@
...
@@ -80,6 +80,7 @@
## 高可用架构
## 高可用架构
-
[
Hystrix 介绍
](
/docs/high-availability/hystrix-introduction.md
)
-
[
Hystrix 介绍
](
/docs/high-availability/hystrix-introduction.md
)
-
[
电商网站详情页系统架构
](
/docs/high-availability/e-commerce-website-detail-page-architecture.md
)
### 高可用系统
### 高可用系统
-
如何设计一个高可用系统?
-
如何设计一个高可用系统?
...
...
docs/high-availability/e-commerce-website-detail-page-architecture.md
0 → 100644
浏览文件 @
0837db82
## 电商网站的商品详情页系统架构
### 小型电商网站的商品详情页系统架构
小型电商网站的页面展示采用页面全量静态化的思想。数据库中存放了所有的商品信息,页面静态化系统,将数据填充进静态模板中,形成静态化页面,推入 Nginx 服务器。用户浏览网站页面时,取用一个已经静态化好的 html 页面,直接返回回去,不涉及任何的业务逻辑处理。
![
e-commerce-website-detail-page-architecture-1
](
/img/e-commerce-website-detail-page-architecture-1.png
)
-
好处:用户每次浏览一个页面,不需要进行任何的跟数据库的交互逻辑,也不需要执行任何的代码,直接返回一个 html 页面就可以了,速度和性能非常高。
-
坏处:仅仅适用于一些小型的网站,比如页面的规模在几十到几万不等。对于一些大型的电商网站,亿级数量的页面,你说你每次页面模板修改了,都需要将这么多页面全量静态化,靠谱吗?
### 大型电商网站的商品详情页系统架构
大型电商网站商品详情页的系统设计中,当商品信息发生变更时,会将变更消息压入消息队列中。
**缓存服务**
从消息队列中消费此消息时,发现有信息发生变更,便通过调用接口,获取变更后的数据。将整合好的数据推送至 redis 中。Nginx 获取到最新的缓存数据,并且缓存到 Nginx 自己本地中。
用户浏览网页时,动态将 Nginx 本地数据渲染到本地 html 模板并返回给用户。
![
e-commerce-website-detail-page-architecture-2
](
/img/e-commerce-website-detail-page-architecture-2.png
)
虽然没有直接返回 html 页面那么快,但是因为数据在本地缓存,所以也很快,其实耗费的也就是动态渲染一个 html 页面的性能。如果 html 模板发生了变更,不需要将所有的页面重新静态化,直接将数据渲染进最新的 html 页面模板后响应即可。
\ No newline at end of file
docs/high-availability/hystrix-introduction.md
浏览文件 @
0837db82
# 用 Hystrix 构建高可用服务架构
#
#
用 Hystrix 构建高可用服务架构
## Hystrix 是什么?
##
#
Hystrix 是什么?
在分布式系统中,每个服务都可能会调用很多其他服务,被调用的那些服务就是
**依赖服务**
,有的时候某些依赖服务出现故障也是很正常的。
在分布式系统中,每个服务都可能会调用很多其他服务,被调用的那些服务就是
**依赖服务**
,有的时候某些依赖服务出现故障也是很正常的。
Hystrix 可以让我们在分布式系统中对服务间的调用进行控制,加入一些
**调用延迟**
或者
**依赖故障**
的
**容错机制**
。
Hystrix 可以让我们在分布式系统中对服务间的调用进行控制,加入一些
**调用延迟**
或者
**依赖故障**
的
**容错机制**
。
...
@@ -9,14 +9,14 @@ Hystrix 通过将依赖服务进行**资源隔离**,进而阻止某个依赖
...
@@ -9,14 +9,14 @@ Hystrix 通过将依赖服务进行**资源隔离**,进而阻止某个依赖
总而言之,Hystrix 通过这些方法帮助我们提升分布式系统的可用性和稳定性。
总而言之,Hystrix 通过这些方法帮助我们提升分布式系统的可用性和稳定性。
## Hystrix 的历史
##
#
Hystrix 的历史
Hystrix 是高可用性保障的一个框架。Netflix(可以认为是国外的优酷或者爱奇艺之类的视频网站)的 API 团队从 2011 年开始做一些提升系统可用性和稳定性的工作,Hystrix 就是从那时候开始发展出来的。
Hystrix 是高可用性保障的一个框架。Netflix(可以认为是国外的优酷或者爱奇艺之类的视频网站)的 API 团队从 2011 年开始做一些提升系统可用性和稳定性的工作,Hystrix 就是从那时候开始发展出来的。
在 2012 年的时候,Hystrix 就变得比较成熟和稳定了,Netflix 中,除了 API 团队以外,很多其他的团队都开始使用 Hystrix。
在 2012 年的时候,Hystrix 就变得比较成熟和稳定了,Netflix 中,除了 API 团队以外,很多其他的团队都开始使用 Hystrix。
时至今日,Netflix 中每天都有数十亿次的服务间调用,通过 Hystrix 框架在进行,而 Hystrix 也帮助 Netflix 网站提升了整体的可用性和稳定性。
时至今日,Netflix 中每天都有数十亿次的服务间调用,通过 Hystrix 框架在进行,而 Hystrix 也帮助 Netflix 网站提升了整体的可用性和稳定性。
## Hystrix 的设计原则
##
#
Hystrix 的设计原则
-
对依赖服务调用时出现的调用延迟和调用失败进行
**控制和容错保护**
。
-
对依赖服务调用时出现的调用延迟和调用失败进行
**控制和容错保护**
。
-
在复杂的分布式系统中,阻止某一个依赖服务的故障在整个系统中蔓延。比如某一个服务故障了,导致其它服务也跟着故障。
-
在复杂的分布式系统中,阻止某一个依赖服务的故障在整个系统中蔓延。比如某一个服务故障了,导致其它服务也跟着故障。
-
提供
`fail-fast`
(快速失败)和快速恢复的支持。
-
提供
`fail-fast`
(快速失败)和快速恢复的支持。
...
@@ -35,7 +35,7 @@ Hystrix 是高可用性保障的一个框架。Netflix(可以认为是国外
...
@@ -35,7 +35,7 @@ Hystrix 是高可用性保障的一个框架。Netflix(可以认为是国外
Hystrix 可以对其进行资源隔离,比如限制服务 B 只有 40 个线程调用服务 C。当此 40 个线程被 hang 住时,其它 60 个线程依然能正常调用工作。从而确保整个系统不会被拖垮。
Hystrix 可以对其进行资源隔离,比如限制服务 B 只有 40 个线程调用服务 C。当此 40 个线程被 hang 住时,其它 60 个线程依然能正常调用工作。从而确保整个系统不会被拖垮。
## Hystrix 更加细节的设计原则
##
#
Hystrix 更加细节的设计原则
-
阻止任何一个依赖服务耗尽所有的资源,比如 tomcat 中的所有线程资源。
-
阻止任何一个依赖服务耗尽所有的资源,比如 tomcat 中的所有线程资源。
-
避免请求排队和积压,采用限流和
`fail fast`
来控制故障。
-
避免请求排队和积压,采用限流和
`fail fast`
来控制故障。
-
提供 fallback 降级机制来应对故障。
-
提供 fallback 降级机制来应对故障。
...
...
img/e-commerce-website-detail-page-architecture-1.png
0 → 100644
浏览文件 @
0837db82
18.5 KB
img/e-commerce-website-detail-page-architecture-2.png
0 → 100644
浏览文件 @
0837db82
34.9 KB
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录