不会飞的章鱼

熟能生巧,勤能补拙,静能生慧;念念不忘,必有回响。

【慕聘网】内网互通原则

内网互通原则

在开发分布式或微服务架构时,确保各组件(虚拟机、数据库、中间件、移动端)能够相互访问是顺利进行开发的基础。以下是我们在开发环境中必须遵守的“内网互通原则”。

1. 核心准则:打破网络壁垒

为了保证数据在不同设备间顺畅流转,需要从系统、云端及物理网络三个层面进行配置:

关闭本地防火墙

  • 目的:允许其他设备(如手机 APP 或同一局域网的其他电脑)访问本地启动的服务。
  • 操作:通过 macOS 或 Windows 的系统设置,将防火墙调至“关闭”状态,或允许相关的端口入站。

关闭 Linux 防火墙与安全组配置

  • Linux 内部:微服务通常运行在 Linux 虚拟机中。为了确保中间件和服务的正常通信,需要永久性关闭 Linux 防火墙(而非仅暂时关闭),确保重启后策略不会自动开启。
  • 云端安全组:如果使用云服务器,安全组相当于外部防火墙。必须手动开启相应的业务端口(如 80、8080、Redis、数据库端口等),以便本地环境联通。

2. 物理与网段同步

连接至同一网段

  • 网络一致性:确保服务端(PC/Server)和客户端(手机/测试机)连接在同一个网络节点下(如相同的 Wi-Fi 频段 5GHz)。
  • IP 段检查:确认所有设备的 IP 地址处于同一个内网地址段内(如 192.168.1.x)。只有在同网段下,网络才能真正实现二进制层面的直连。

3. 前端请求的“绝对地址”原则

这是一个新手经常踩坑的地方:前端(APP/iOS/安卓/鸿蒙/小程序)不要使用 localhost

  • Localhost 的本质localhost (或 127.0.0.1) 仅代表设备自身。当你在手机 APP 中请求 localhost 时,手机会尝试访问它自己,而不是你的开发机。
  • 正确做法:前端请求地址必须使用服务端的实际内网 IP 地址(如 192.168.1.100),确保请求能够准确投递到目标服务端。

[!NOTE]
内网称呼小贴士
在不同的技术语境下,内网也有多种称呼:

  • **局域网 (LAN)**:最通用的物理层面称呼。
  • **私有网络 (Private Network)**:强调其非公网可见性。
  • **专有网络 (VPC)**:云服务商提供的逻辑隔离网络。

4. 微服务通信全景

基于上述互通原则,本项目(慕聘网)在内网环境下构建了以下完整的微服务通信体系:

核心服务治理

  • 服务发现/配置:所有服务通过 Nacos Cluster 实现动态注册与分发。
  • 服务间调用:采用 OpenFeign/RPC 进行声明式调用。
  • 负载均衡:使用 Spring Cloud LoadBalancer 均衡流量。
  • 分布式事务:依靠 Seata 统一管理跨库事务。

存储与中间件生态

  • 持久化:MySQL 主从集群 + ShardingSphere (分库分表)。
  • 缓存:Redis Cluster 分布式缓存 + Caffeine 本地二级缓存。
  • 搜索/分析:Elasticsearch (全文检索) + MongoDB (Snapshots/Logs)。
  • 异步解耦:RabbitMQ (消息集群) + Canal (数据同步)。

边缘网关与运维

  • 三层网关:云负载均衡 (SLB) -> Nginx/OpenResty -> Spring Cloud Gateway。
  • 安全防护:Sentinel (限流/自愈) + JWT (认证鉴权) + Zookeeper (分布式锁)。
  • 全栈 DevOps:K8s (KubeSphere) + Jenkins + Prometheus (监控) + SonarQube (质量)。

5. 总结

通过严格遵守内网互通原则,我们确保了微服务架构在开发与测试环境下的安全性、可靠性和可维护性。这不仅是配置的统一,更是跨终端协同开发的技术基石。

------ 本文结束------
如果你喜欢这篇文章,打赏一下让我开心到原地转圈圈~,金额随意,感谢鼓励与支持!