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

news/2024/5/20 22:20:52/文章来源:https://blog.csdn.net/wanghao112956/article/details/94431399

前言

只有光头才能变强。

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

回顾上一篇:

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

这周周末读了第四章,现在过来做做笔记,希望能帮助到大家。

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

一、服务框架的设计

从上一篇我们讲到,应用拆开了以后,不同功能/模块之间的调用不再单纯通过本机调用,引入了远程的服务调用。
在这里插入图片描述
而远程的服务调用这个东东会很难吗?说白了,不就是两台服务器之间通信吗?
在这里插入图片描述
这时候,你能想到什么?必定是Socket吧。没错,我们通过Socket肯定是可以完成两个系统之间的通信的问题的。(Socket相信大家在学习基础的时候已经写过Demo了,这我就不多BB了)
在这里插入图片描述
一两个系统的Socket写起来没啥,但我们应用拆分之后,系统可是会变得很多很多。
在这里插入图片描述
系统很多的情况下,我们在写远程调用代码的时候就可能要考虑到以下的问题:

  1. 我们肯定是不希望每次远程调用的时候都贴上重复的Socket代码,要是调用远程方法像调用本地方法一样简单就好了。
  2. 某个服务应用为了实现高可用,集群了(多台机器部署同一套应用)。那我远程调用的时候选择哪一台机器进行调用?
  3. 网络之间的传输协议用现成的HTTP呢?还是自定义一套通信协议呢?
  4. 因为我们想调用远程方法像调用本地方法一样,那么在网络上就需要传输Java对象,要传输Java对象,就必须得对其进行序列化和反序列化的处理。能实现序列化的操作也有很多,选择哪一种方式呢?
  5. 网络之间的通讯也有bio、nio、以及aio这几种模式,一般来说我们会选择哪种比较多?如果不了解nio的同学,可以阅读我以前写过的笔记
  6. ….等等等

由于系统之间的调用会非常多,我们自然是不希望写重复的代码的,所以服务框架(也可以说是RPC框架)就应运而生了【说白了就是专门处理远程服务调用的框架】。有了服务框架,我们就可以实现多个系统之间以统一的方式来进行远程调用了。

一个服务框架需要考虑的问题其实远不止上面所列出的那些,比如说:

  • 服务框架与Web应用和Web容器的关系是什么?服务框架和应用是绑定在一起吗?(服务框架作为Web应用的一个依赖包),还是说服务框架只是Web应用的一个扩展(没有和Web应用打包绑定在一起)
  • 服务框架的jar包和Web应用的jar包冲突了怎么办?
  • 为了保证系统的稳定性,流量控制也应该要考虑到
  • 在远程调用的时候,需不需要以更细粒度的方式来进行选择(之前说的是选择哪台机器,但可以细粒度到机器下的接口或者方法)
  • …等等

二、服务框架的技术实现思路

在书中给出了设计服务框架时需要考虑的问题的同时也给出了一些实现思路,我摘录一些我觉得比较有参考意义的说说。

2.1 像本地一样调用远程服务

比如服务消费方在执行orderService.buy("HHKB键盘")时,实质上调用的是远端的服务。

这用到啥技术?明显就是动态代理

在实现的时候有三个基础属性可以参考一下:

  • interfaceName— 确定调用的是哪一个接口
  • version— 如果接口进行升级了,可以使用version来进行区分和隔离
  • group— 对远程服务的机器进行分组,那么调用的时候就可以选择不同的分组来调用(调用者对统一服务的调用进行隔离)

2.2 其他

  1. 当远程调用服务的时候,不需要每次都要去注册中心查找可用的地址,而是把地址缓存在调用方。当服务有变化的时候,主动告诉调用者就行了。
  2. 流量控制一般会基于两个维度去考虑:一、自身的接口和方法。二、请求的来源
  3. 并不是所有的请求都要经过服务提供者。像走缓存这样频繁的操作(而且大多数都是会成功的),直接在调用方调用就ok了
    在这里插入图片描述

标题最后

总的来说,书的第四章主要是在讲解在设计服务框架的时候应该要考虑到哪些方面,可以以什么方案来解决,看得还是非常过瘾的(这只是我的个人笔记,书上还有很多的内容)。

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

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

相关文章

利用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是我在很久之前在网上面的一个…

SEO三原素,看图你懂的!

SEO三原素(图示) 结构、内容、链接都是SEO的必要因素,通过不同权重的匹配,衍生出其他优化要素。 图中,将SEO整个关系链清晰地展示给我们,并用线条画出了其在网站结构、内容、链接要素中所处的位置。把与SEO…