java中间件开发 豆瓣_《大型网站系统与Java中间件》读书笔记(上)

news/2024/5/10 0:39:07/文章来源:https://blog.csdn.net/weixin_34746715/article/details/114617878

前言

只有光头才能变强。

文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y

这本书买了一段时间了,之前在杭州没带过去,现在读完第三章,来做做笔记

8e6427f17f50607cfeafa544468b7924.png豆瓣评分

这本书前三章都在科普和回顾中间件/分布式的基础,讲得非常通俗易懂。在之前已经我写过基础分布式相关文章,大家可以先去看看:

一、为什么分布式?模块之间独立,各做各的事,便于扩展,复用性高

高吞吐量。某个任务需要一个机器运行10个小时,将该任务用10台机器的分布式跑(将这个任务拆分成10个小任务),可能2个小时就跑完了

在书上给出的观点:升级单机的处理能力的性价比越来越低,单机的处理能力存在瓶颈

分布式系统更加稳定和可用(单机挂了就挂了,分布式挂了一般还有备用/不至于整个链路全挂)

1.1 大型网站架构演进过程

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

在我们最开始接触Java项目的时候,一般来说是单机的(数据库、Web服务器都是同一台机器)

6b40cb6f5a1c4defb6ea72d9217826a3.png数据库、Web服务器都是同一台机器

网站对外开放以后,访问量增大,服务器的压力也随之提高。此时,我们最简单的做法就是可以将数据库和应用分开,这样可以缓解一下当前系统的压力

f537b4bc3f2ea63ce4c49d8fe98f6344.png数据库服务器和应用服务器分开

应用服务器的压力继续增大,我们可以把应用服务器做成集群(说白了,就是加了台机器)

814c21125f01b7f4b8a2a877338f39bf.png给应用服务器加了一台

加了台应用服务器以后,就出现新的问题了:用户请求的时候,走哪台服务器啊?

Session是依赖单台服务器的,那Session怎么搞?

bdf2dbce997c308b38e1d892a955b3e9.png两个直面而来的问题

解决用户走哪台服务器,我们就在用户请求到达应用服务器之前,加了一个”负载均衡器“,这个”负载均衡器“说白了就写了用户请求会到哪台应用服务器的逻辑比如说,一个用户请求过来,负载均衡器指派这个请求到服务器A。另一个用户请求过来,负载均衡器指派这个请求到服务器B。这样就平摊了请求— 这种方式就叫做轮询

…策略还有很多种,就看你想怎么实现了,反正这个逻辑的代码放在负载均衡器上。

而Session的问题,我之前写什么是单点登录(SSO)已经讲过了,一般来说我们可以将Session保存在Redis上就行了。

a9f59226f1c295078f97b8542a325338.png解决请求指派和Session的问题

随着业务的发展,我们的数据量和访问量都在增长,现在有不少的业务都是读多写少的,对于这种业务也是会直接反应到数据库上。

于是,我们可以增加一个读库。写入的操作走服务器C的MySQL,读取的操作走服务器D的MySQL。这样就实现了读写分离。

dbad354e5114348d72f5d31b488c6d19.png读写分离

一般来说,我们的写库也叫做主库,读库也叫做从库,在互联网架构中,这叫做主从架构,比如常见的架构:一主多从(详细的参考资料:如何给老婆解释什么是 Master-Slave)

64ddb509c0bd9dd1bf0b101b15172b51.png主从架构

针对读多写少的业务,我们还有优化策略,引入搜索引擎和缓存。搜索引擎也相当于一个读库,使用搜索引擎的倒排表方式,能够大大提升检索的速度

缓存则将热数据放入内存中,如果查询的数据在缓存中存在,则直接返回

d804e15363c7673d4e35d2630ee55bde.png增加缓存和搜索引擎

搜索引擎和缓存的参考资料:

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

继读写分离之后,数据库还是遇到了瓶颈,此时我们就可以采用分库分表策略了:垂直拆分— 不同的业务数据分到不同的数据库

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

f13e0514f10dbe62f73be67d480fcf2c.png垂直拆分示例图

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

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

分布式Key-Value系统

分布式数据库

数据库问题解决之后,应用也面临着挑战(应用的功能会越做越多,应用也随之越做越大),为了不让应用持续变大,这就需要把应用拆开,从一个应用变为两个/多个应用。

5c8bca2f4ed9bc465a1b625c1046d5cd.png应用拆分

不同功能/模块之间的调用不再单纯通过本机调用,引入了远程的服务调用。

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

最后

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

HTTP/Session

JVM

Java多线程以及并发的基础知识

JUC包下的常见类

这些我都曾经多多少少都做过笔记,不妨在我的公众号下找找相关的文章。总的来说,还是读得很过瘾的!后面读完下面的章节,我会继续分享,敬请期待。乐于输出干货的Java技术公众号:Java3y。公众号内有200多篇原创技术文章、海量视频资源、精美脑图,关注即可获取!

cc22400aa93dabe8f950a3610821ea0b.png

有趣的灵魂在等你

长按扫码可关注

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

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

相关文章

seo自动工具_世界工厂网:星矿关键词库管理 助力企业获取SEO流量

互联网时代,得流量者得天下,这一直是企业线上业务的核心目标。特别是搜索引擎这一领域,是企业开展线上渠道的必争之地。想要抢占这部分流量,企业要做的第一步就是挖掘优质产品关键词搭建优化网站,占领流量高地。但如何…

摄影html网页模板,2017年最新15个漂亮的 HTML 摄影网站模板

摄影是一门艺术,它需要大量的耐心和努力工作来捕捉那些精彩的瞬间。如果你是一位热情的摄影师,想要建立一个网站来展示那些高质量的摄影作品,那么你找对地方了。本文包含15个最佳的摄影网站模板,你可以使用这些 HTML 模板创建自己…

网站设计

这几天和艺术学院的同学交流网站的设计,和各自做了几个作品,感觉和别人的确是存在不小的差距! 学习! 图一:自己设计的学员展板的简介 图二:李丽的作品 图四:程志伟的作品 图四:赵立文…

从今开始,让网站用Email地址登录

现今,很多Web2.0网站都使用Email地址作为登录用户名,其有如下优点: 1. 不易重复。用户名经常会重复,导致用户不得不在多个网站之间使用多种不同的用户名,不易记忆和管理;而Email地址具有唯一性。 2. …

vue遇到ie兼容问题如何处理_当网站遇到黑链时该如何进行处理?

黑链是指通过非正规手段所获取的反向链接,一些居心不良或者竞争对手们会把黑链挂在你的网站上,从而给网站带来不好的影响,如果处理不及时,还会导致网站被降权降排名,让之前的优化都白费了,那么当网站遇到黑…

房产网站源码 Java_基于jsp的房产网站-JavaEE实现房产网站 - java项目源码

基于jspservletpojomysql实现一个javaee/javaweb的房产网站, 该项目可用各类java课程设计大作业中, 房产网站的系统架构分为前后台两部分, 最终实现在线上进行房产网站各项功能,实现了诸如用户管理, 登录注册, 权限管理等功能, 并实现对各类房产网站相关的实体进行管理。该房产…

一个网站的诞生- MagicDict开发总结1 [首页]

能够自己拥有一个 个人网站,可能是很多人的梦想。在这个阶级固化的时代,我们需要一个梦想和目标。。。。 由于本职工作不算忙碌,自己对于动手制作网站有兴趣,所以,从去年9月底开始,萌生了制作一个个人网站的…

网站图片全自动加密_网站发布的视频如何禁止下载播放?

即便视频通过一机一码加密工具加密,还是觉得通过网盘、邮箱等给学员或用户传送加密视频太麻烦?想让学员不用下载加密视频本地存储就实现在线观看?这种情况均可以通过搭建视频类网站可实现,但需做好对网站视频加密做好安全防止盗用…

常用的40个网站制作技巧

1. οncοntextmenu"window.event.returnValuefalse" 将彻底屏蔽鼠标右键 <table border οncοntextmenureturn(false)> <td>no </table> 可用于Table 2. <body onselectstart"return false"> 取消选取、防止复制 3. οnpaste&q…

[JavaScript] Firefox 插件开发(网站编辑转发工具)

&#xff10;&#xff18;年 公司为了让网站编辑工作方便&#xff0c;做过这么一个简单转发文章的firefox插件。 功能&#xff1a;在firefox右键菜单&#xff0c;弹出调用页面把当前网页部分内容 Post 到网站中。 代码下载&#xff1a;firefox插件右键转发文章  &#xff08;…

自定义SharePoint新网站创建过程

在一个SharePoint网站的网站设置页面中&#xff0c;使用“将网站另存为模板”链接&#xff0c;管理员可以将整个网站保存为一个扩展名为.stp格式的模板。使用这个stp网站模板&#xff0c;管理员可以重复创建同样结构&#xff08;和内容&#xff09;的新网站。那么这种stp格式的…

从LiveJournal后台发展看大规模网站性能优化方法[zz]

http://blog.zhangjianfeng.com/article/743 因近期打算对公司应用架构进行调整, 其中的一些思路值得借鉴. 以下为转载内容: 一、LiveJournal发展历程 LiveJournal是99年始于校园中的项目&#xff0c;几个人出于爱好做了这样一个应用&#xff0c;以实现以下功能&#xff1a; 博…

WEB开发中两个新建模版的比较(仅针对VS2008讨论):新建网站》ASP.NET网站和新建项目》ASP.NET WEB 应用程序...

一直以来自己不是很清楚这两者之间到底有什么区别&#xff0c;只知道怎么去用&#xff0c;今天看书时又看到这个问题了&#xff0c;所以就网罗了一下大家的观点&#xff0c;并自己做了一下比较&#xff0c;再次声明&#xff0c;目前所有的比较内容都是建立在VS2008开发环境下的…

QQLIVE的电影搬到你的网站

以上是QQLIVE内的影片演示&#xff0c;打开QQLIVE播放页面&#xff0c;以让子弹飞四川话版为例&#xff0c; 播放页面地址&#xff1a;http://live.qq.com/cover/a/amjzx3jr21o7cv1.html 在播放页面空白处单击鼠标右键查看源代码&#xff0c;找到分集&#xff0c;如图中所示把 …

如何真正提高ASP.NET网站的性能

前言怎么才能让asp.net网站飞得更快&#xff0c;有更好的性能&#xff1f;——这是很多开发者常常思考的一个问题。我有时候会做大量的测试&#xff0c;或请求别人帮忙采集一些数据&#xff0c;希望能够验证网上一些专家的建议或证明自己的一些猜想。理论上讲&#xff0c;我们希…

vs2005简单的使用控件,实现网站常用的任意文本超链接

本文很简单的介绍一个网友的问题&#xff0c;没什么技术含量&#xff0c;仅为充实一下自己的生活哈&#xff01;高手闪人…… 这是一个datagrid控件&#xff0c;图片那列是一个超级链接列&#xff0c;现在想把数字都用“详细”两个字给代替了。要怎么做&#xff1f; 这种情况在…

三鹿集团网站多次被黑 再度关注.net安全开发

转: 9月12日中午大约13时&#xff0c;笔者欲登陆三鹿集团网站&#xff0c;查询“婴儿患肾结石”最新进展&#xff0c;发现三鹿集团网站无法登陆&#xff0c;该网站导航栏出现“三聚氰胺集团”字样。20分钟之后&#xff0c;网站恢复正常。 截至笔者发稿时&#xff0c;三鹿网站仍…

简单五步走,让你的网站增添光彩

2019独角兽企业重金招聘Python工程师标准>>> 现在大部分网站站主很少懂得用HTML去写自己的网站&#xff0c;他们更多的是依赖一些已经制订好的网站模板&#xff0c;他们只需要复制粘贴就行&#xff0c;而他们都没有想过要怎么去改一下&#xff0c;让自己的网站更加个…

HubSpot – 网站开发必备的 jQuery 信息提示库

HubSpot 一款功能丰富的 jQuery 消息提示插件。它可以帮助你个性化显示您的应用程序的事务性消息。您可以轻松地包裹 Ajax 请求进度&#xff0c;成功和错误消息&#xff0c;还可以添加操作链接到您的消息中。 HubSpot 内置五种风格的主题&#xff0c;以及可以定义六种显示位置&…

dedecms生成xml格式网站地图

网站地图现在在seo中的位置越来越重要,今天我们来说一下,如何用dedecms生成首页的功能,方便快捷的生成xml格式网站地图 每一步: 新键个xml格式网站地图模板供dedecms解析,如下: 以下为引用的内容&#xff1a;<?xml version"1.0" encoding"UTF-8"?>…