当前位置: 首页 > news >正文

流媒体内容分发终极解决方案:当融合CDN与P2P视频交付结合

前言

随着互联网的发展,流媒体视频内容日趋增多,已经成为互联网信息的主要承载方式。相对传统的文字,图片等传统WEB应用,流媒体具有高数据量,高带宽、高访问量和高服务质量要求的特点,而现阶段互联网“尽力而为”的特点决定了在现有网络架构下大规模流媒体应用是存在困难的。而向受众提供高速且高质的视频内容是许多专业电视及视频内容提供商的重要目标,因此支持视频流的CDN 和相关辅助技术很重要,因为他们不仅可以优化视频传输速率,同时还可以兼顾传输的视频文件质量水平。

 本文火伞云将为大家探讨融合CDN与视频流P2P视频传输技术相结合的一些细节,比如我们将探讨该技术是什么,如何实现融合CDN+P2P架构,并向大家说明将CDN架构与P2P视频传输技术相结合的好处。

一、什么是融合CDN?

在深入探讨融合CDN之前,我们先有必要再了解一下CDN。CDN的全称是Content Delivery Network,即内容分发网络。其目的是通过在现有的Internet中增加一层新的网络架构,通过智能化策略,将中心的内容发布到最接近用户、服务能力最好的的网络”边缘”节点,使用户可以就近取得所需的内容,解决Internet网络拥塞状况,提高用户访问网站的响应速度。

然而,传统的CDN技术仍然是一种客户机-服务器(C/S)的计算模式。尽管传统CDN将服务能力和服务内容在网络上进行了分布,可以在一定程度上加速流媒体内容的分发,提高服务质量。但由于其核心仍然是基于C/S的架构,其服务的扩展能力取决于分布节点的不断部署,由此造成了CDN服务能力扩展的成本非常高,需要不断的投资。同时,用户访问是具有随意性,突发性等特点的,而传统CDN系统不具备弹性动态扩展的能力,难以从根本上提升CDN系统的效率。

 融合CDN是在传统CDN基础上,通过技术手段融合全球各主流CDN厂商的优质节点,以实现全业务处理能力的智能调度加速管理服务,融合CDN通过强大的智能调度策略来综合利用上述资源来解决实际场景中的问题,可以带来更加优质的服务效果、更加稳定的质量和相对降低的服务成本。

二、什么是P2P视频传输?

P2P即Peer to Peer,也就是节点对节点的对等传输。P2P技术将各个用户互相结合成的一个网络,共享其间的带宽、共同处理其中的信息。与传统的客户机-服务器模式(C/S模式)不同,P2P工作方式中,每一个客户终端既是客户机又是服务器。采用P2P架构可以有效地利用大量普通计算设备的计算资源和带宽资源,将计算任务或存储数据分布到所有结点上,达到高性能计算、高I/O能力、高带宽和海量存储的目的。同时,由于P2P的特性,系统在大规模并发服务时凸显优势,整体系统具备动态扩展能力,整体系统的部署成本低,系统效率高,同时具有系统级的服务可靠性。

然而,单纯的客户端P2P应用也存在自身的缺点,首先P2P系统天生具有可控性、可管理性差的特点,同时面临可用性问题,从整个系统而言,P2P是可靠的,但是对于单个内容或者单个任务而言,P2P是不稳定的,每个Peer具有随意性,随时可以退出系统;交换的内容随时可能被删除或者被终止共享。另外,由于传统P2P技术中Peer之间交换数据的通道,更多的是由自动寻找最优逻辑链路,而忽视实际的物理链路的情况,对电信运营商IP承载网的实际构架考虑不多,造成骨干网拥塞、网络流量风暴等损害电信运营商利益的问题。这些问题都阻碍了单纯的客户端P2P技术难以进一步发展成为电信级的技术平台。

 

为了使 P2P 传输发挥作用,系统首先在设备或对等点之间建立连接。然后,对等方可以在将视频流传送给其他对等方时共享视频流,这样您的设备就可以传输和接收视频。然而,为了使该系统正常工作,对等点必须存储一定量的数据并相互交换状态信息,以便保留连接性并共享数据。只要这些对等点提供足够的传出带宽,每个对等点都应该能够从其连接的对等点传送和接收视频内容。点对点传输旨在以最低带宽要求提供高质量和可扩展的视频流,而不管每个对等点的能力或网络速度是否不规则。

三、P2P与CDN融合的可行性探讨

P2P系统弹性好,可扩展性强、服务效率高,但是在内容版权管理、用户管理、QoS服务保障、流量有序性等方面比较弱。而CDN技术则是拥有突出的服务质量保障、极强的内容、用户管理能力,但扩展性差,大规模服务投入成本高,且效率难以提升。

由此,我们可以看出作为当前的两种主流内容传送技术,CDN和P2P各有所长,在计算模型上的差异具有一定的互补性,如果能够结合P2P的扩展能力和CDN的可靠性、可管理性,就可以构建一个可管理的、能够承载电信级内容应用的流媒体内容分发平台。

四、如何实现融合CDN+P2P架构?

目前就P2P与CDN融合现有的研究,有人提出了一种上层传统CDN架构,下层采用P2P技术进行分发的模式。也就是流媒体内容通过传统CDN技术,从中心推送至网络边缘服务节点缓存,然后从边缘服务节点到用户之间的传输则采用P2P技术,而P2P的范围一般是控制在本地节点服务范围之内。如果用户需要的内容,本地节点没有,则节点通过CDN网络向中心服务器索取,拿到本地之后再向本地用户进行P2P分发。这种模式基本上利用了传统P2P与CDN各自的特性,一方面利用CDN服务高保障的特性推送至离用户最近的服务节点,同时又利用了P2P的可扩展性提升了节点的可服务能力。

然而这种P2P与CDN的混合只是利用了其各自的外部特性,从本质上而言,P2P自身没有改造,CDN也没有优化,自身架构没有发生融合,只相当于把两种技术的服务方式做了迭加。

P2P与CDN的融合应该是充分的利用了双方各自的最优之处,不仅能够在服务上能各自在不同的阶段发挥各自的优势,同时也应该利用对方的优势对自身弱势的地方进行改造与完善,最后再加以统一、迭加,形成一个真正优化的,CDN与P2P互相融合的流媒体内容分发平台。

火伞云以P2P技术对CDN网络进行优化、改造。在传统CDN中,从中心到边缘服务器之间的数据链路需要相当大的投资,同时资源的效率不高、带宽复用率低;另外在跨ISP等情况下,链路的畅通也难以得到保障。针对这一问题,火伞云采用以P2P的方式组织CDN节点设备,利用P2P的目录服务和多点传输能力,实现CDN节点设备之间的内容交换、互相备份,由此可增强从中心到边缘节点的CDN网络的内容传送效率、使系统冗余性得以提高,从而提升CDN的内容分发能力。

同时P2P也借鉴CDN技术的一些优点,将CDN的管理机制和服务能力引入P2P网络,增加超级节点的地位,形成以CDN为可靠的内容核心,以P2P为扩展机制的架构,增加内容、用户的可管理性,同时使得网络流量更加有序。

火伞云一方面在CDN网络核心层(即从中心到边缘服务器层)采用P2P技术进行优化,用P2P技术重新组织原有C/S架构的各服务节点,另外在P2P网络中也融入CDN技术的一些优点,使其在可控、可管理性上得以提高。在两种技术充分融合、渗透、改造之后,将两者统一,形成一个真正优化的(上层CDN经过P2P化改造,提升了分发能力,下层P2P可控性强,有管理能力)的CDN与P2P完整融合的流媒体内容分发平台。 

 五、使用融合CDN+P2P 架构的优点

经过P2P与融合CDN技术的全面融合的流媒体内容分发平台,将获得如下优势:

1、减少中心节点数据源的压力,降低成本。传统CDN每个服务节点如果要获得中心节点数据源数据,均需要直接访问数据源服务器,造成数据源压力大,消耗带宽多,造成中心到边缘的数据链路得不到保障。而通过对CDN服务节点采用P2P方式进行组织,请求由对等点处理,节点之间可以通过P2P方式互相共享、缓存数据,大大降低了中心数据源的压力,可以显着减少来自流源(原始服务器和CDN)的请求,直接导致更具成本效益的视频传输。

2、提高系统服务能力可靠性,实施更简便不同服务节点之间对中心数据多点备份,这一策略使得CDN系统整体冗余能力、服务的自我恢复能力得以提高。使得系统的稳定性进一步增强。且由于P2P传输主要使用WebRTC协议,该协议与所有现代浏览器兼容。因此实现起来极其方便,并且还可以提供额外的流源隐私保护。

3、增加可提供服务的节点数量,提升服务灵活性。过P2P方式互相共享、缓存数据,使得可以提供服务的节点数量大大增加,同时使得服务节点的服务更加灵活、智能。如流媒体VOD应用时,几个邻近节点可按照一定规则各自缓存不同的流媒体数据,如果A节点服务的用户请求观看B节点缓存的内容,可采取A节点与B节点通过P2P方式交换数据,由A节点为用户提供服务。

4、增加了系统的可扩展性,提升服务效率。融合CDN网络提供了一个可扩展的平台,可以为越来越多的观众提供内容。与单CDN厂商相比,它提供对更多服务器的访问,从而增加了观众的容量,有了更多的服务器,视频流内容就可以传送给更多的人,而不会造成网络瘫痪。下层内容分发采用P2P技术实现,使得系统的可扩展能力大大提高。整体系统具有良好的弹性,应对用户访问突发性、随意性的情况,保持良好的服务效率。

5、提高网络的可管理性,避免流量无序。系统将P2P的范围严格限制在某一边缘服务节点的服务区域内,避免了传统P2P技术造成的过多的跨地区、跨ISP造成骨干网拥塞、流量无序的问题。增强了网络的可管理性和服务高的可靠性。另外,通过客户端,可以实现对用户的监控,流量的监管。

6、提高了视频质量,提升客户体验。我们知道CDN架构中的PoP 越多,信号传输的距离就越短,而火伞云作为国内知名的融合CDN厂商结合主流CDN厂商的优质节点,这有助于保持最佳视频质量并减少缓冲,这对于直播流和虚拟活动尤其有价值。

7、扩大地理覆盖范围获取更多受众。利用多融合进来的CDN网络,您可以接触到更多国家/地区的更多观众。例如一家 CDN厂商的大部分服务器可能集中在北美,而另一家提供商的服务器可能分布在欧洲各地。 通过将两者结合起来,您可以根据目标受众覆盖两个地点的观众。

8、结合非典型区域性法规促进全球传播。如果您要向国际观众广播,火伞云融合CDN的特殊设置肯定会派上用场。如前所述,更多国家/地区的更多服务器可以帮助您吸引更多观众。当向中国、越南或俄罗斯等非典型监管地区的观众进行流媒体播放时,融合CDN 策略对于业务至关重要。并非每个 CDN都拥有绕过防火墙或在中国拥有边缘服务器的许可,因此通过在您的融合CDN设置中添加一个可以绕过防火墙的CDN,您的公司可以进入受众和市场。

9、增加总体带宽,强化网络安全性。

当同伴互相上传视频时,他们会增加所有用户可用的总体带宽。同时实施融合CDN解决方案的另一个好处是它可以增强流媒体设置的安全性,如果一个CDN厂商遇到安全故障,下一个CDN厂商就会介入并继续提供安全的流媒体体验。就像投资时分散风险一样,广播公司和视频内容提供商可以高枕无忧,因为他们知道自己有备份安全选项。

六、哪些公司需要使用融合CDN+P2P解决方案?

几乎所有向大量观众分发内容的广播/电视公司和视频内容提供商都将受益于融合CDN+P2P解决方案,这其中以拥有大量国际观众的广播/电视公司和视频内容提供商为甚。

七、去哪里寻找合适的融合CDN+P2P提供商及相关注意事项?

最简单、也是最直接的方法是选择一个能够满足您的需求并可以直接投入使用的解决方案提供商,这种方法可以让您工作量最小化。

无论您是要自行研发构建,还是直接寻找合作伙伴,还有一些注意事项可能会对您有所帮助:

1、选择合适的CDN选择合适的CDN厂商取决于您的需求,但首先要注意的是您选择的CDN提供商在视频交付方面的经验和既往表现如何。比如还有CDN厂商根本不支持流媒体加速。而且很多CDN厂商只专注于某些地区内容加速,并非每个CDN厂商在世界各地的表现都同样强劲。最后,需要关注的一个重要因素是该厂商网络节点的数量,有的CDN厂商没有很多节点,因而体验不好。

2、选择DNS或融合CDN管理解决方案提供商

融合CDN管理解决方案或多CDN DNS提供商可以使管理多个CDN变得更加轻松。通常此类解决方案提供商可以提供设置、工程支持和集成支持方面的帮助,不同的解决方案还可以帮助使用数据和智能算法以最有效的方式路由网络流量。

3、明确自己的流量路由策略

DNS负载均衡

市场上有一些DNS解决方案提供商允许用户自定义其流量路由规则。订阅所有所需的CDN后,所有CDN 的CNAME都会被复制并粘贴到DNS记录中,以便DNS服务器可以根据流量路由规则确定用于请求的 CNAME (CDN),最常见的流量路由规则包括循环、加权循环和地理位置。

RUM/综合监控驱动的负载平衡

一些提供商以套餐形式提供此服务,基本思想是利用RUM和综合监控数据作为驱动负载平衡决策的基础。

提供此服务的DNS提供商通常在DNS级别上处理此问题,这意味着它与DNS 负载平衡方法非常相似,只不过它是根据实际性能数据智能地做出决策。火伞云目前主要采用的也是本策略处理此问题,接收请求、测量并将最佳CNAME或IP的值返回给DNS。

八、结语

P2P与CDN技术的融合,一方面可以互补自身先天计算模型的缺陷,对CDN或者P2P传统架构进行改造;一方面P2P的扩展能力和CDN的可靠性、可管理性也可完美结合。这两方面都为实现一个能够承载电信级超大规模内容分发传送应用的内容分发平台提供了机会,火伞云也希望能够为大家提供更优质的大规模流媒体内容分发服务体验。

相关文章:

流媒体内容分发终极解决方案:当融合CDN与P2P视频交付结合

前言 随着互联网的发展,流媒体视频内容日趋增多,已经成为互联网信息的主要承载方式。相对传统的文字,图片等传统WEB应用,流媒体具有高数据量,高带宽、高访问量和高服务质量要求的特点,而现阶段互联网“尽力…...

根据源码,模拟实现 RabbitMQ - 内存数据管理(4)

目录 一、内存数据管理 1.1、需求分析 1.2、实现 MemoryDataCenter 类 1.2.1、ConcurrentHashMap 数据管理 1.2.2、封装交换机操作 1.2.3、封装队列操作 1.2.4、封装绑定操作 1.2.5、封装消息操作 1.2.6、封装未确认消息操作 1.2.7、封装恢复数据操作 一、内存数据管理…...

Apache Flume架构和原理

Apache Flume是一个开源的分布式、可靠的日志收集和聚合系统,旨在将大量的日志数据从不同的数据源(如应用程序、服务器、设备)收集到中心存储或数据湖中。Flume的架构设计允许用户在大规模数据流的情况下实现可靠的数据传输和处理。 Flume特性 Apache Flume是一个用于收集…...

代码随想录算法训练营day38 | LeetCode 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯

509. 斐波那契数(题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台) 思路:经典的dp题。 int fib(int n){if(n 0 || n 1) return n;return fib(n-1) fib(n-2); } 70. 爬楼梯(题目…...

Linux基本指令【下】

欢迎来到Cefler的博客😁 🕌博客主页:那个传说中的man的主页 🏠个人专栏:题目解析 🌎推荐文章:题目大解析3 目录 👉🏻cat👉🏻echo(输出…...

向量检索:基于ResNet预训练模型构建以图搜图系统

1 项目背景介绍 以图搜图是一种向量检索技术,通过上传一张图像来搜索并找到与之相关的其他图像或相关信息。以图搜图技术提供了一种更直观、更高效的信息检索方式。这种技术应用场景和价值非常广泛,经常会用在商品检索及购物、动植物识别、食品识别、知…...

SpringBoot 响应头添加版本号、打包项目后缀添加版本号和时间

文章目录 响应头添加版本号获取版本号添加响应处理器请求结果 打包项目后缀添加版本号和时间实现打包结果 响应头添加版本号 获取版本号 在 pom.xml 中,在 project.version 下定义版本号 在 application.yml 获取 pom.xml 中 project.version 中的信息 添加响应处…...

优化指南:带宽限制的可行策略

大家好!作为一名专业的爬虫程序员,我们经常面临的一个挑战就是带宽限制。尤其是在需要快速采集大量数据时,带宽限制成为了我们提升爬虫速度的一大阻碍。今天,我将和大家分享一些解决带宽限制的可行策略,希望能帮助大家…...

计算机提示mfc120u.dll缺失(找不到)怎么解决

在计算机领域,mfc120u.dll是一个重要的动态链接库文件。它包含了Microsoft Foundation Class (MFC) 库的特定版本,用于支持Windows操作系统中的应用程序开发。修复mfc120u.dll可能涉及到解决与该库相关的问题或错误。这可能包括程序崩溃、运行时错误或其…...

Java基于SpringBoot+Vue实现酒店客房管理系统(2.0 版本)

文章目录 一、前言介绍二、系统结构三、系统详细实现3.1用户信息管理3.2会员信息管理3.3客房信息管理3.4收藏客房管理3.5用户入住管理3.6客房清扫管理 四、部分核心代码 博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W,Csdn博客专家、掘金/华为云/阿里云…...

微服务架构2.0--云原生时代

云原生 云原生(Cloud Native)是一种关注于在云环境中构建、部署和管理应用程序的方法和理念。云原生应用能够最大程度地利用云计算基础设施的优势,如弹性、自动化、可伸缩性和高可用性。这个概念涵盖了许多方面,包括架构、开发、…...

C++day2作业(2023.8.22)

1.定义一个学生的结构体,包含学生的姓名,年龄,成绩,性别,学生的成绩,姓名,定义为私有权限;定义一个学生类型的结构体变量,设置公有函数用于给学生的成绩和名字进行赋值&a…...

在 Spring Boot 中使用 OpenAI ChatGPT API

1、开始咯 我们来看看如何在 Spring Boot 中调用 OpenAI ChatGPT API。 我们将创建一个 Spring Boot 应用程序,该应用程序将通过调用 OpenAI ChatGPT API 生成对提示的响应。 2、OpenAI ChatGPT API 在开始具体讲解之前,让我们先探讨一下我们将在本教…...

【leetcode】225.用队列实现栈

分析: 队列遵循先入先出的原则,栈遵循后入先出的原则 也就是说,使用队列实现栈时,入队操作正常,但是出队要模拟出栈的操作,我们需要访问的是队尾的元素;题目允许使用两个队列,我们可…...

机器学习中XGBoost算法调参技巧

本文将详细解释XGBoost中十个最常用超参数的介绍,功能和值范围,及如何使用Optuna进行超参数调优。 对于XGBoost来说,默认的超参数是可以正常运行的,但是如果你想获得最佳的效果,那么就需要自行调整一些超参数来匹配你…...

第1章:计算机网络体系结构

文章目录 1.1 计算机网络 概述1.概念2.组成3.功能4.分类5.性能指标1.2 计算机网络 体系结构&参考模型1.分层结构2.协议、接口、服务3.ISO/OSI模型4.TCP/IP模型1.1 计算机网络 概述 1.概念 2.组成 1.组成部分&...

【Java 动态数据统计图】动态数据统计思路Demo(动态,排序,containsKey)三(115)

上代码&#xff1a; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map;public class day10 {public static void main(String[] args) {List<Map<String,O…...

【游戏评测】河洛群侠传一周目玩后感

总游戏时长接近100小时&#xff0c;刚好一个月。 这两天费了点劲做了些成就&#xff0c;刷了等级&#xff0c;把最终决战做了。 总体感觉还是不错的。游戏是开放世界3D游戏&#xff0c;Unity引擎&#xff0c;瑕疵很多&#xff0c;但胜在剧情扎实&#xff0c;天赋系统、秘籍功法…...

java新特性之Lambda表达式

函数式编程 关注做什么&#xff0c;不关心是怎么实现的。为了实现该思想&#xff0c;java有了一种新的语法格式&#xff0c;Lambda表达式。Lambda本质是匿名内部类对象&#xff0c;是一个函数式接口。函数式接口表示接口内部只有一个抽象方法。使用该语法可以大大简化代码。 …...

【考研数学】线形代数第三章——向量 | 2)向量组相关性与线性表示的性质,向量组的等价、极大线性无关组与秩

文章目录 引言二、向量组的相关性与线性表示2.3 向量组相关性与线性表示的性质 三、向量组等价、向量组的极大线性无关组与秩3.1 基本概念 写在最后 引言 承接前文&#xff0c;我们来学习学习向量组相关性与线性表示的相关性质 二、向量组的相关性与线性表示 2.3 向量组相关性…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法&#xff1a;原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件&#xff0c;如包含恶意代码、敏感数据或欺诈内容的文档&#xff0c;在企业协同办公环境中&#xff08;如Teams、Google Workspace&#xff09;尤为重要。结合大模型技术&…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

Pydantic + Function Calling的结合

1、Pydantic Pydantic 是一个 Python 库&#xff0c;用于数据验证和设置管理&#xff0c;通过 Python 类型注解强制执行数据类型。它广泛用于 API 开发&#xff08;如 FastAPI&#xff09;、配置管理和数据解析&#xff0c;核心功能包括&#xff1a; 数据验证&#xff1a;通过…...

篇章二 论坛系统——系统设计

目录 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 1. 数据库设计 1.1 数据库名: forum db 1.2 表的设计 1.3 编写SQL 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 通过需求分析获得概念类并结合业务实现过程中的技术需要&#x…...