java tcpclient socket提供重连方法了吗_《大型网站系统与Java中间件》读书笔记 (中)...

news/2024/5/12 22:08:25/文章来源:https://blog.csdn.net/weixin_29717875/article/details/112082023

前言

只有光头才能变强。
文本已收录至我的GitHub仓库,欢迎Star: https:// github.com/ZhongFuCheng 3y/3y

回顾上一篇:

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

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

注:在看这篇文章之前,强烈建议先看看我之前写过的一篇SpringCloud入门文章:外行人都能看懂的SpringCloud,错过了血亏!。看完再回头看这篇文章,你会发现:这本书讲的设计与实现在SpringCloud中几乎都有对应的组件支持。

一、服务框架的设计

从上一篇我们讲到,应用拆开了以后,不同功能/模块之间的调用不再单纯通过本机调用,引入了远程的服务调用

e2e86aaf99531059fa016968c68a7e99.png

而远程的服务调用这个东东会很难吗?说白了,不就是两台服务器之间通信吗?

384d2b636c0b72507d0d2fb9026b0ec4.png

这时候,你能想到什么?必定是Socket吧。没错,我们通过Socket肯定是可以完成两个系统之间的通信的问题的。(Socket相信大家在学习基础的时候已经写过Demo了,这我就不多BB了)

5bcf6e2719497da1b9296f2dc442648f.png

一两个系统的Socket写起来没啥,但我们应用拆分之后,系统可是会变得很多很多。

8146d7d6b80377cd7967f29ff12e3a0a.png

系统很多的情况下,我们在写远程调用代码的时候就可能要考虑到以下的问题:

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

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

  • 推荐阅读:RPC太太太太太太太容易理解啦!

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

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

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

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

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

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

这用到啥技术?明显就是动态代理(给女朋友讲解什么是代理模式)

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

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

2.2 其他

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

b6c69ffe171aa302095a25312c6a98e4.png

最后

总的来说,书的第四章主要是在讲解在设计服务框架的时候应该要考虑到哪些方面,可以以什么方案来解决,看得还是非常过瘾的(这只是我的个人笔记,书上还有很多的内容)。强烈建议配合我之前写过的一篇SpringCloud入门文章:外行人都能看懂的SpringCloud,错过了血亏!食用。

乐于输出 干货的Java技术公众号: Java3y。公众号内 有200多篇原创技术文章、海量视频资源、精美脑图, 关注即可获取!

afc1b9e4f630fbc6ba31af9e3787119a.png

觉得我的文章写得不错,点

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

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

相关文章

从团购网的漏洞看网站安全性问题

自从9月份在同事推荐下在某团购网买了一份火锅的套餐后,就迷上了,几乎每天必去浏览一遍,看看有什么又便宜又好吃的。元旦期间当然也不例外,1号那天上午,看到了XXX团购网的“VIP会员0元领红包”活动,0元&…

前端 匡威网站布局

HTML <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>首页</title><link rel"stylesheet" href"CSS/style.css"> </head> <body><!-- 这是顶部 --&g…

可以免费自学编程的12个网站

小编推荐&#xff1a;Fundebug专注于JavaScript、微信小程序、微信小游戏&#xff0c;Node.js和Java实时BUG监控。真的是一个很好用的bug监控费服务&#xff0c;众多大佬公司都在使用。 编程学习 很多人包括一些企业家&#xff0c;和市场营销人员都认为学习编程对一个人走向成…

推荐一些非常有用的学习网站

小编推荐&#xff1a;Fundebug专注于JavaScript、微信小程序、微信小游戏&#xff0c;Node.js和Java实时BUG监控。真的是一个很好用的bug监控费服务&#xff0c;众多大佬公司都在使用。 1. free-programming-books 这个就不多说了&#xff0c;之前有推荐过的&#xff0c;免费的…

前端工程师必备实用网站

小编推荐&#xff1a;Fundebug专注于JavaScript、微信小程序、微信小游戏&#xff0c;Node.js和Java实时BUG监控。真的是一个很好用的bug监控费服务&#xff0c;众多大佬公司都在使用。 一、配色类网站 http://colorhunt.co 这个网站给我们提供了很多的配色方案&#xff0c;我们…

去掉 JavaScript 后,亚马逊这些网站会变成这样

小编推荐&#xff1a;Fundebug提供JS错误监控、微信小程序错误监控、微信小游戏错误监控&#xff0c;Node.j错误监控和Java错误监控。真的是一个很好用的错误监控费服务&#xff0c;众多大佬公司都在使用。 为什么我们应该重视“noscript”这个话题&#xff1f; 首先要澄清一下…

如何通过域名直接访问你的网站

喜欢你已经超过两分钟了&#xff0c;你说还能撤回吗&#xff1f; 每次进入自己的网站都要输入端口号&#xff0c;很不舒服。于是今天查了一下&#xff0c;怎么用域名直接访问自己的网站。 带端口和项目名称的访问方式如下&#xff1a; 例如&#xff1a;www.xxx.com:8080/项目…

建站模板推荐

今天终于把个人网站部署好了&#xff0c;有想做 个人网站可以参考一下 朱乐乐的网站 建站步骤&#xff1a; 下面给大家看一下阿里官方的网页模板。要收费&#xff0c;欣赏欣赏 阿里云提供企业案例&#xff0c;可直接选择心仪的&#xff0c;直接建站 点击此链接即可观看上方…

程序员实用的网站

福利 今天总结了很实用的一些网站&#xff0c;安利给大家&#xff1a; 我把这些网站书签已导出&#xff1a; 获取书签&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/16COgtPnqGc8X__wlvgoXSQ 提取码&#xff1a;s9ih 下载好之后&#xff0c;打开浏览器导入书签。 …

免费主机,免费二级域名分发,免费建临时网站,免费扒网

给大家分享一点&#xff0c;没钱&#xff0c;没钱&#xff0c;没钱&#xff0c;新手喜欢的东西&#xff01; 废话不多&#xff0c;安排&#xff01; 免费主机 网址&#xff1a;彩虹云主机&#xff08;免备案&#xff09; 在这里可以填久一点&#xff0c;最好就90年&#xff…

全程追踪入侵JSP网站服务器

小 中 大 前段时间&#xff0c;应朋友之邀&#xff0c;我对他们托管的三台 服务器 的主机进行了测试&#xff0c;发现了JSP网站存在的几个问题。 入侵测试第一步&#xff1a;扫描扫描是入侵的第一步&#xff0c;它可以让你对即将入侵的目标有一个全面的了解。同时扫描还有可…

21天转型容器实战营(二十一基于AOS模板完成电商网站创建)

应用编排->交付->运维->治理全生命周期应用编排AOS:图形化编排&#xff0c;一键式部署实现企业业务快速上云和迁移AOS主要概念 云上的应用编排服务(Application Orchestration Service),可以通过设计复杂应用拓扑,实现复 杂应用的一键式部署。 模板:遵循AOS语法规范定…

流媒体之老黄谈流媒体服务与视频网站研发

今天应公司领导的要求做完了来公司的第三个项目流媒体服务与视频网站开发&#xff0c;接近年终&#xff0c;博客停更了好久&#xff0c;心里一直不甘&#xff0c;上周六和北理工的好兄弟安老板定下誓言&#xff0c;每天保证五篇技术博客的更新量&#xff0c;年终上线三大社区。…

大学四年因为知道了这32个网站,我成了别人眼中的大神!

转载于&#xff1a;https://blog.csdn.net/sinat_33921105/article/details/103899234 依稀记得&#xff0c;毕业那天&#xff0c;我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”&#xff0c;哎呀&#xff0c;别提当时多开心啦&#x1f602;&#xff0c;嗯&…

常用网站记录

代码复制粘贴 网址&#xff1a;https://paste.ubuntu.com/ 说明&#xff1a;在编程中&#xff0c;经常需要把代码复制粘贴到其他地方&#xff0c;使用该网站能很好的保持原格式&#xff0c;不出现乱码 如下图所示&#xff1a; 使用说明 Poster 此段代码名字&#xff08;可随…

免费论文翻译网站——通天塔

本网站是一个开源的学术论文翻译网站&#xff0c;论文链接如下&#xff1a; http://tongtianta.site/ 一般可以先查看自己的论文是否在网站上已有翻译&#xff0c;如果没有再进行“添加翻译” 该网站有两个功能 第一&#xff1a;免费翻译 可以免费翻译论文&#xff0c;论文页…

中小型网站架构分析及优化

以上网站架构广泛运用中大型网站中&#xff0c;本文从架构每一层分析所用主流技术和解决手段&#xff0c;有助于初入网站运维朋友们&#xff0c;进一步对网站架构认识&#xff0c;从而自己形成一套架构概念。 第一层&#xff1a;CDN 国内网络分布主要南电信北联通&#xff0c;造…

网站打开速度优化-前端篇

今天我的www.phpsong.com的博客上线了&#xff0c;但是第一天上线就被人攻击&#xff0c;我直接吐血&#xff0c;强烈吐槽这个黑 减少http请求 具体的方式为 1.多个小图片合成一个大的图片然后又定位的方式取图片&#xff0c;专业点的叫法CSS sprites 2.多个css合并减少个数&am…

大型网站架构演变和知识体系

1、架构演变第一步&#xff1a;物理分离webserver和数据库 2、架构演变第二步&#xff1a;增加页面缓存 如用squid做页面缓存&#xff0c;或生产静态页面&#xff0c;不使用jsp 3、架构演变第三步&#xff1a;增加页面片段缓存 页面缓存失效情况比较多&#xff0c;因此可以使用…

bat脚本重启IIS中的网站

bat脚本实现重启IIS中的网站 echo off %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit cd /d C:\Windows\System32\inetsrv\ tas…