《大型网站系统与Java中间件》读书笔记(上)

news/2024/5/20 23:22:45/文章来源:https://blog.csdn.net/wanghao112956/article/details/94430236

前言

只有光头才能变强。

文本已收录至我的GitHub仓库,欢迎Star:github.com/ZhongFuChen…

(想自学习编程的小伙伴请搜索圈T社区,更多行业相关资讯更有行业相关免费视频教程。完全免费哦!)

一、为什么分布式?

在之前的文章也提过为什么要分布式:

  • 模块之间独立,各做各的事,便于扩展,复用性高
  • 高吞吐量。某个任务需要一个机器运行10个小时,将该任务用10台机器的分布式跑(将这个任务拆分成10个小任务),可能2个小时就跑完了

在书上给出的观点:

  • 升级单机的处理能力的性价比越来越低,单机的处理能力存在瓶颈
  • 分布式系统更加稳定和可用(单机挂了就挂了,分布式挂了一般还有备用/不至于整个链路全挂)

1.1 大型网站架构演进过程

其实在没接触过分布式之前,在逛论坛的时候,经常会出现一些看起来很牛逼的词,诸如”读写分离“、”分库分表“、”主从架构“、”负载均衡“、”单点故障“等等名词,就觉得很高大上。下面我就稍微顺着”大型网站架构演进过程“来讲解一下这些词

在我们最开始接触Java项目的时候,一般来说是单机的(数据库、Web服务器都是同一台机器)
在这里插入图片描述
网站对外开放以后,访问量增大,服务器的压力也随之提高。此时,我们最简单的做法就是可以将数据库和应用分开,这样可以缓解一下当前系统的压力
在这里插入图片描述
应用服务器的压力继续增大,我们可以把应用服务器做成集群(说白了,就是加了台机器)
在这里插入图片描述
加了台应用服务器以后,就出现新的问题了:

  • 用户请求的时候,走哪台服务器啊?
  • Session是依赖单台服务器的,那Session怎么搞?
    在这里插入图片描述

解决用户走哪台服务器,我们就在用户请求到达应用服务器之前,加了一个”负载均衡器“,这个”负载均衡器“说白了就写了用户请求会到哪台应用服务器的逻辑

  • 比如说,一个用户请求过来,负载均衡器指派这个请求到服务器A。另一个用户请求过来,负载均衡器指派这个请求到服务器B。这样就平摊了请求— 这种方式就叫做轮询
  • …策略还有很多种,就看你想怎么实现了,反正这个逻辑的代码放在负载均衡器上。

而Session的问题,一般来说我们可以将Session保存在Redis上就行了。
在这里插入图片描述
随着业务的发展,我们的数据量和访问量都在增长,现在有不少的业务都是读多写少的,对于这种业务也是会直接反应到数据库上。

于是,我们可以增加一个读库。写入的操作走服务器C的MySQL,读取的操作走服务器D的MySQL。这样就实现了读写分离
在这里插入图片描述
一般来说,我们的写库也叫做主库,读库也叫做从库,在互联网架构中,这叫做主从架构,比如常见的架构:一主多从
在这里插入图片描述
针对读多写少的业务,我们还有优化策略,引入搜索引擎和缓存

  • 搜索引擎也相当于一个读库,使用搜索引擎的倒排表方式,能够大大提升检索的速度
  • 缓存则将热数据放入内存中,如果查询的数据在缓存中存在,则直接返回
    在这里插入图片描述

:这里说的索引和缓存就未必特指ES和Redis,比如缓存我也可以用本地缓存而不一定是Redis的。这里用Redis和ES只是我画图方便。

继读写分离之后,数据库还是遇到了瓶颈,此时我们就可以采用分库分表策略了:

  • 垂直拆分— 不同的业务数据分到不同的数据库
  • 水平拆分— 将同一张表的数据拆分到不同的数据库中(原因是这张表的数据量/更新量太大了)

在这里插入图片描述
注:单表行数超过500万行或者单表容量超过2GB才推荐进行分库分表(如果预计三年都达不到这个数据量,不要在创建表的时候就分库分表!) —《阿里巴巴 Java开发手册》

在数据存储方面,除了关系型数据库之外,如果有别的业务场景,可能还需要引入分布式存储系统

  • 分布式文件系统
  • 分布式Key-Value系统
  • 分布式数据库

数据库问题解决之后,应用也面临着挑战(应用的功能会越做越多,应用也随之越做越大),为了不让应用持续变大,这就需要把应用拆开,从一个应用变为两个/多个应用。
在这里插入图片描述
不同功能/模块之间的调用不再单纯通过本机调用,引入了远程的服务调用。

某个应用只有一台机器上运行着,如果这台机器上出现了问题,导致这个应用无法运行,这就叫单点故障。

最后

这本书《大型网站系统与Java中间件》的前三章主要是铺垫什么是中间件、什么是分布式(从单机演进到分布式的过程)以及讲述了网站的架构演进过程,剩下的是回顾一些基础。比如说:

  • bio/nio/aio
  • HTTP/Session
  • JVM
  • Java多线程以及并发的基础知识
  • JUC包下的常见类

这些我都曾经多多少少都做过笔记,总的来说,还是读得很过瘾的!后面读完下面的章节,我会继续分享,敬请期待。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_827959.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《大型网站系统与Java中间件》读书笔记 (中)

前言 只有光头才能变强。 文本已收录至我的GitHub仓库,欢迎Star:github.com/ZhongFuChen… 回顾上一篇: 《大型网站系统与Java中间件》读书笔记(一) 这周周末读了第四章,现在过来做做笔记,希望…

利用node.js写爬虫 爬取某相亲网站全部交友信息

点击查看爬取世纪佳缘相亲交友信息 利用node.js,写了一个爬虫js。1个小时左右的时间,便爬取了2000多条交友信息,包括网名,年龄,图片,学历,工资等。当然,爬取的速度和网速有很大的关…

分享21个广告排行、15个交友会员、25个网站导航和39个文件管理PHP源码,总有一款适合你

链接:https://pan.baidu.com/s/1aMHf6wDNbHm-2upU287w2A 提取码:px8q 分享21个广告排行、15个交友会员、25个网站导航和39个文件管理PHP源码,总有一款适合你 下面是文件的名字,我放了一些图片,文章里不是所有的图主要…

支付宝记---电脑网站支付(.NET)

根据商品信息和价格生成支付宝支付的二维码 2019年夏,张渔歌仄伏于家中。越明年,疫情依旧,渔歌隧研究支付宝支付。其中心酸不言表,属予作文以记之。 一、准备工作 1、支付宝开发平台https://open.alipay.com/。需要进行企业级的…

Web Monitor/Dev/Test Tool Collection 网站/网页监控/开发/测试工具集合

HttpWatch HttpWatch是强大的网页数据分析工具. 包括网页摘要.Cookies管理.缓存管理.消息头发送/接受.字符查询.POST 数据和目录管理功能.报告输出. Features: Easily monitor HTTPS, HTTP and SPDY without using proxies or changing network settingsSupports IE/Firefox on…

Java 爬虫遇到需要登录的网站,该怎么办?

这是 Java 网络爬虫系列博文的第二篇,在上一篇 Java 网络爬虫,就是这么的简单 中,我们简单的学习了一下如何利用 Java 进行网络爬虫。在这一篇中我们将简单的聊一聊在网络爬虫时,遇到需要登录的网站,我们该怎么办&…

【Python】Flask+Gunicorn搭建简单网站

1.安装Flask第三方库 pip3 install Flask 2.创建Flask应用程序 项目结构如上图所示,其中static用来放置静态文件,如js文件、css文件以及图片等,templates文件夹用来放置模板文件,即html文件。 在项目中导入Flask第三方库&#…

【大型网站技术实践】初级篇:借助Nginx搭建反向代理服务器

一、反向代理:Web服务器的“经纪人” 1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请…

css3和html5网站模板

过去的几年,网页设计和制作人员就已开始关注和使用 HTML5 了,如今 HTML5 得到了更加广泛的应用,国外已有很多基于 HTML5 制作的网站。所以,今天这篇文章给大家带来的是35款基于 HTML5 和 CSS3 的非常精致的网站模板,大…

分享88个ASP.NET企业网站源码,总有一款适合您

分享88个ASP.NET企业网站源码,总有一款适合您 88个ASP.NET企业网站源码下载链接:https://pan.baidu.com/s/1AXv0-dmV-bV-MQTyX9OXRg?pwdzcwa 提取码:zcwa Python采集代码下载链接:采集代码.zip - 蓝奏云 新翔绩效考核系统基…

分享69个ASP.NET企业网站源码,总有一款适合您

分享69个ASP.NET企业网站源码,总有一款适合您 69个ASP.NET企业网站源码下载链接:https://pan.baidu.com/s/1lOmnWD83XkU29_Ix-ldVYQ?pwds9q9 提取码:s9q9 Python采集代码下载链接:采集代码.zip - 蓝奏云 AutoWeb建站王.NET企…

Google网站管理员工具的新功能

近日,Google网站管理员工具(原Google Sitemap)进一步扩展了其功能,可以更有效地帮助用户分析网站中可能存在的问题以及如何更有效地进行对网站的优化。详细信息请参见Google Webmaster Central官方Blog中的说明。其中较引人注意的便是如今在Google网站管…

linux网站搭建实例

我们知道windows网站搭建一般是:IISAspSqlserver,而linux网站搭建是:ApachephpMysql。两者之间个有千秋,但是为什么我们许多的门户网站搭建都选择linux—apachephpmysql呢?当然是其的安全性了,Apache 是世界…

一个可以动态创建响应动画GIF的网站,AjaxLoad

呵呵,使用Ajax做Web开发的必备品看看样式:呵呵,还有许多样式,如果你想要,可以到这个网站自己生成喔http://www.ajaxload.info/

二十行代码!实现网站的验证码自动识别

一. 自己去chaojiying官网注册一个账号,购买相关的产品. 爬虫时候,自动识别需要登录的验证码,并实现自动登录,第一步使用超级鹰识别出网站的验证码 #!/usr/bin/env python # coding:utf-8import requests from hashlib import md5class Chaojiying_Client(object):def __init__…

SEO第二课:索引

上周我们学习了搜索引擎工作原理中信息收集的部分——蜘蛛和收录,了解到搜索引擎蜘蛛对网页的抓取方式以及网站目录结构、链接结构将决定蜘蛛采用深度优先或广度优先进行爬取。那么搜索引擎是如何存储蜘蛛爬取到的网页和链接信息?如何根据用户给定的关键…

EntLib.com 网站征集中文名称,希望各位热心的朋友踊跃发言

EntLib.com 网站征集中文名称,希望各位热心的朋友踊跃发言EntLib.com Team 专注于开源.Net 系统,如开源ASP.NET论坛、开源ASP.NET博客、开源ASP.NET电子商务平台(前台购物系统和后台业务处理系统),以及分享、交流Micro…

启明星Portal企业内部网站V4.3版 附演示地址 http://demo.dotnetcms.org

下载地址:http://www.dotnetcms.org/download/portal/PortalV4.3.0.0.rar 启明星Portal系统是一款基于微软ASP.NET平台开发的,集成内容发布、文章、产品、图片、招聘、留言、自定义模型、采集等功能于一体的企业网站管理系统。启明星Portal是构建企业内网…

推荐两个网页设计在线配色网站

对于网页设计师而言,每个网站的设计都需要一套最适合它的配色方案,配色方案的选择关系到整个网站的成功与失败。下面我向大家推荐两个国外在线配色方案网站,也许会给你的设计工作带来很大的帮助。ColorbeColorbe是我在很久之前在网上面的一个…