分布式微服务系统架构第147集:JavaPlus技术文档平台日更

加群联系作者vx:xiaoda0423

仓库地址:webvueblog.github.io/JavaPlusDoc...

1024bat.cn/

github.com/webVueBlog/...

webvueblog.github.io/JavaPlusDoc...

mysql是什么

mysql是一种关系型数据库, 是一个关系型数据库管理系统, 由瑞典MySQL AB 公司开发, 目前属于 Oracle 公司.

mysql有哪些功能?

mysql有哪些功能?

mysql有以下功能:

  1. 关系型数据库
  2. 数据库管理系统
  3. 支持多种编程语言
  4. 支持多种操作系统
  5. 支持多种数据库客户端
  6. 支持多种数据库服务器
  7. 支持多种数据库协议
  8. 支持多种数据库引擎
  9. 支持多种数据库备份和恢复
  10. 支持多种数据库压缩
  11. 支持多种数据库加密
  12. 支持多种数据库解密
  13. 支持多种数据库索引
  14. 支持多种数据库视图
  15. 支持多种数据库触发器
  16. 支持多种数据库存储过程
  17. 支持多种数据库函数
  18. 支持多种数据库事件
  19. 支持多种数据库角色
  20. 支持多种数据库用户
  21. 支持多种数据库表
  22. 支持多种数据库列

mogodb是什么

mogodb是一个基于分布式文件存储的数据库。由C++语言编写。

什么是分布式文件存储?

分布式文件存储是指将文件存储在多个节点上,每个节点都可以存储一部分文件。这样可以提高文件存储的效率,也可以提高文件存储的可靠性。

什么是C++语言?

C++是一种高级编程语言,它是一种面向对象的编程语言。C++语言是一种通用的编程语言,它可以用来开发各种类型的应用程序。

什么是面向对象的编程语言?

面向对象的编程语言是指使用面向对象的思想来编写程序。面向对象的思想是将现实世界中的事物抽象为对象,然后使用对象来描述现实世界中的事物。

面向对象的编程语言有三个基本特征:封装、继承、多态。

封装是指将数据和操作数据的方法封装在一个对象中。这样可以隐藏对象的实现细节,只向外部暴露必要的方法。

继承是指一个对象可以继承另一个对象的属性和方法。这样可以避免重复编写代码,提高代码的复用性。

多态是指一个对象可以有多种形态。这意味着一个对象可以被视为它自己的类型,也可以被视为它的父类型。

什么是面向对象的数据库?

面向对象的数据库是指使用面向对象的思想来设计数据库。使用面向对象的思想来设计数据库,可以提高数据库的效率,也可以提高数据库的可维护性。

什么是mogodb?

mogodb是一个面向对象的数据库。它是一个分布式文件存储数据库。它是一个基于分布式文件存储的数据库。它是一个基于C++语言编写的数据库。

mogodb的优势

mogodb的优势有:

  1. 高性能:mogodb是一个高性能的数据库。它可以支持大量的数据读写操作。
  2. 高可扩展性:mogodb是一个高可扩展性的数据库。它可以通过添加节点来扩展数据库的容量和性能。
  3. 高可用性:mogodb是一个高可用性的数据库。它可以通过复制数据来保证数据库的可用性。
  4. 丰富的查询功能:mogodb是一个功能丰富的数据库。它支持丰富的查询功能,包括基本的查询、高级的查询、文本查询、地理空间查询等。
  5. 支持多种数据模型:mogodb是一个支持多种数据模型的数据库。它支持文档型数据模型、键值型数据模型、列存储型数据模型和图形型数据模型等。

mogodb的应用场景

mogodb的应用场景有:

  1. 内容管理系统:mogodb可以用来存储和管理内容数据。例如,博客、新闻、产品评论等。
  2. 实时数据分析:mogodb可以用来存储和分析实时产生的数据。例如,传感器数据、日志数据等。
  3. 社交网络:mogodb可以用来存储和管理用户生成的内容。例如,用户的好友列表、用户的动态等。
  4. 物联网(IoT):mogodb可以用来存储和管理物联网设备生成的数据。例如,传感器数据、设备状态等。

nacos是什么

Nacos是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

Nacos致力于帮助您发现、配置和管理微服务。Nacos提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

为什么大厂微服务都在用nacos?

Nacos架构解析:Nacos本质上是个双核引擎,既是配置中心,又是服务发现中心。它的架构核心是插件化设计,通过Core内核层支撑配置管理,Namespace和服务管理Cluster双模块,注意看这个Distro的协议,这是阿里自研的AP架构基石。

采用异步复制实现最终一致性,配合健康检查的Beat心跳机制,这就是它能支撑十万级节点吞吐的秘诀。

和 Eureka 最大的区别在数据一致性模型。Eureka纯AP架构采用自我保护模式,而Nacos可以动态切换AP/CP模式。 Raft协议保证强一致性。Distro协议保障高可用。看核心指标:Nacos 2.0 的gRPC长连接。 能把服务发现延迟压到毫秒级别。这是Eureka的HTTP轮询机制永远做不到的。

架构选型:

  1. 看是否需要统一配置中心。
  2. 看集群规模是否超过500节点。
  3. 看是否需要k8s集成。

Eureka已经停止维护。

配置中心+服务网格=Nacos

纯服务发现=Consul

Nacos重构电商大促系统,动态配置推送让秒杀库存切换实现了零停机。当你有跨地域多活需求时,Nacos的集群同步机制能自动识别机房拓扑,这就是为什么双十一每秒百万次,配置不蹦的关键。

注册中心选型:需要配置版本管理吗;能接受秒级服务上下线延迟吗;要不要无缝对接Sentinel流量管控

nginx是什么

nginx可以作为HTTP服务器,也可以作为反向代理服务器。

就是单Master多Worker架构,想象一个物流中心:Master进程是总指挥,读取nginx.conf配置管理worker, Worker进程是工人,数量对应CPU核数,每个Worker单线程却能处理上万个请求,背后是事件驱动模型,用异步非阻塞机制,让一个线程同时管理数千连接,让一个线程同时管理数千连接,彻底解决性能难题,Worker进程共享监听端口的设计,当你在浏览器输入URL时,操作系统通过SO_REUSEPORT参数,把请求随机分配给任意Worker,即使某个Worker崩溃,其他进程照常运转,这就是高可用的核心秘密。Master进程负责接收请求,Worker进程负责处理请求。

  • 事件驱动模型
  • 异步非阻塞IO
  • 进程间共享监听端口

三大核心模块:

  1. 反向代理如同智能路由路,对外暴露统一域名,背后自动轮询10台服务器,实现负载均衡。负载均衡实现了请求分发,实现了高可用,实现了高并发。
  2. 负载均衡算法库自带加权轮询,IP哈希等七种策略,轻松应对秒杀场景
  3. Proxy Cache把热点数据缓存到磁盘,下次同样请求直接返回本地文件,响应速度提升10倍

共享内存机制解决了分布式限流难题:所有Woker共用计数内存,说好每秒限流1000次,就不会出现单个进程放行999次的漏洞

动静分离:把图片视频交给Nginx处理,把动态请求交给Tomcat处理,实现了动静分离,提高了响应速度。

动态请求才找后端,带宽成本立减70%。

当你更新配置时,Master会启动新Worker接管流量,旧Worker完成现有请求才退出,这叫优雅重启。

加上lua脚本的扩展能力,轻松实现鉴权,改写响应等自定义逻辑。

Nginx能扛住5万QPS,这是它的核心竞争力。

单节点宕机,只需要keep alived+VIP组成双机热备,实现了高可用。 服务器总在流量高峰崩溃,微服务接口分散难以管理,CDN费用居高不下,一定要想到Nginx。

CDN是什么

CDN即内容分发网络,本质上是个"内容快递网络",是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络"边缘",使用户可以就近取得所需的内容,提高用户访问网站的响应速度。

CDN,它把源站的数据提前缓存到离用户最近的节点,用空间换时间,用分布抗压力,文本数据用关系型数据库+Redis的组合拳,文件数据就要用对象存储+CDN的组合拳。就像select * from user where id = 1,我们可以用redis缓存,而不用每次去后端查询数据库。从而减少了源库的压力。

为什么redis不能存储图片呢?想象一下10GB的Redis实例存10万张图,光是维护key列表就能让内容爆炸,而CDN的边缘节点自带硬盘存储,专门为海量文件而设计,CDN架构:

  1. 第一层调度系统,像导航地图,用DNS解析+IP定位,把用户定位到离他最近的节点。
  2. 边缘节点,相当于遍历全国的快递网点,用SSD硬盘+内存缓存高频内容。最近用过的资源优先保留。
  3. 第三层回源机制,当本地也没存货时,用HTTP/2快速从源站拉数据,还能自动平衡多个源站压力

CDN实际解决问题:输入网址,首先电脑会根据访问的域名查看浏览器缓存;再看操作系统缓 名的解析,这时云厂商的DNS调度系统,根据你的IP+运营商+节点负载,动态分配"最近最优"的CDN服务器IP给你访问,这个IP其实就是个CDN边缘节点IP。只是这个节点离你最近,访问比较快而已。

当你第一次访问时,边缘节点会检查缓存版本,如果有存货且未过期,直接这个节点给你闪电响应;如果过期了,就秒回源站拿最新版本,同时更新本地库存。

预热办法:上线前,用curl命令去提前访问,并把热数据灌满CDN节点,避免大批流量访问。

场景使用:

  1. 全球用户访问的网站,跨境电商
  2. 突发流量场景(新品发布,抽奖活动)
  3. 大文件分发(游戏更新包,4K视频)
  4. 需要隐藏源站IP的敏感业务

因为redis的存储是基于内存的,内存是有限的,而图片是基于磁盘的,磁盘是无限的。所以redis不能存储图片。

安全组是什么

安全组本质上是个虚拟防火墙,用访问控制列表 ACL技术精准控制流量进出,它通过五元组规则--源IP、源端口、目的IP、目的端口、协议类型来控制流量。

像快递分拣系统一样,只放行盖着正确邮戳的数据包,状态检测,记住你主动发起的连接,像智能门卫自动给返回流量开绿灯。

这三种情况必须配置安全组,第一Web服务器只开放80和443端口,把SSH端口锁进保险柜,第二数据库实例限制内网访问,给数据戴上防毒面具,只开放3306端口,第三堡垒机设置严格源IP白名单,Redis只开放6379端口。

口诀:入站严出站宽,最小权限保平安。

tomcat是什么

tomcat 是一个 web 服务器,用于处理 http 请求。

tomcat的本质就是个"服务员",专业点说就是开源的java servlet容器。简单来说,当你用浏览器访问网站时,tomcat就像餐厅传菜员,把java代码做的"菜品",翻译成你能看懂的HTML页面,它内置的JSP引擎会把页面布局,魔法符合变成正经的Java代码,Coyote连接器负责和浏览器对暗号"处理HTTP协议。

tomcat最牛的是它的类加载机制,每个应用独立的ClassLoader,就像给不同包间装隔离墙,内存泄露,不存在的,配合NIO非阻塞IO模型,每秒处理上千请求跟玩似的。

在server.xml的maxConnections属性中可以设置最大连接数,默认是200。

配合springboot变成微服务大佬们,tomcat的配置都在application.yml中。把reloadable属性设置为true,就可以实现热部署,修改代码后,不用重启服务器,就能看到效果。

tomcat 是Java写前端的好帮手。为啥? 因为它是一个web服务器,它可以处理http请求,返回html页面。

Eureka是什么

Eureka, Eureka就是个服务通讯录,自动更新号码本的秘书。

场景:微服务,停更了,不用了解。

相关推荐
白露与泡影10 分钟前
Java面试避坑指南:牛客网最新高频考点+答案详解
java·开发语言·面试
qq_124987075310 分钟前
基于Node.js的线上教学系统的设计与实现(源码+论文+调试+安装+售后)
java·spring boot·后端·node.js·毕业设计
coding随想25 分钟前
你的电脑在开“外卖平台”?——作业管理全解析
后端
DS小龙哥26 分钟前
基于单片机+毫米波雷达技术设计的车内生命体征监测系统
后端
颜颜颜yan_27 分钟前
【HarmonyOS5】掌握UIAbility启动模式:Singleton、Specified、Multiton
后端·架构·harmonyos
啃瓜子的松鼠1 小时前
泛微OAe9-自定义资源看板
java·后端·sql
野盒子1 小时前
前端面试题 微信小程序兼容性问题与组件适配策略
前端·javascript·面试·微信小程序·小程序·cocoa
coding随想1 小时前
从图书馆到无序仓库:操作系统如何高效管理你的文件
后端
王中阳Go1 小时前
2025Java面试八股②(含121道面试题和答案)
java·后端·面试
neoooo1 小时前
🎯 深入理解:JOIN 中 ON vs WHERE 条件差异
java·后端·mysql