草庐IT

【云原生与5G】微服务加持5G核心网

柒号华仔 2023-08-14 原文

作者:柒号华仔
个人主页:欢迎访问我的主页
个人信条:星光不问赶路人,岁月不负有心人。
个人方向:专注于5G领域,同时兼顾其他网络协议,编解码协议,C/C++,linux等,感兴趣的小伙伴可以关注我,一起交流。

目录

1.微服务架构概念

1.1 单体架构与分布式架构

  谈到微服务架构,不可避免的会先想起单体架构和分布式架构。
  单体架构是指将所有的功能、模块、数据库等耦合在一个应用中,称之为单体架构应用,理所当然单体架构应用部署在一台服务器上。由于单体架构所有功能模块耦合在一起,若出现问题将导致整个系统应用无法工作,维护成本高。
  分布式结构是将一个大的系统进行拆分,将应用和数据等分开部署到不同的服务器上,不同服务器之间通过网络进行通信,体现的更多是物理上的分布部署。实际上分布式架构已经具有了微服务的特性,但它的耦合性强,每个模块缺一不可,另外构建成本高。

1.2 微服务架构

  微服务体现在两个词,第一是"微",第二是"服务"。微说明了小,简单,在这里我又想到了“单纯”一词,单一纯粹。服务是区别于系统,服务一个或者一组相对较小且独立的功能单元,是用户可以感知最小功能集。
  微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间相互协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务和服务之间采用轻量级的通信机制相互沟通。每个服务都围绕着具体的业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。

传统单体架构与微服务架构

  微服务,关键其实不仅仅是微服务本身,而是系统要提供一套基础的架构,这种架构使得微服务可以独立的部署、运行、升级,不仅如此,这个系统架构还让微服务与微服务之间在结构上“松耦合”,而在功能上“高内聚”。

2.微服务与5G核心网

2.1微服务引入5G核心网

  随着微服务架构的发展普及,加上5G技术的演进和发展需求,5GC将云原生的微服务架构引入,构建了面向业务的SBA架构,实现了低耦合+高内聚的技术升级。
  在面向业务的5G网络架构中,将原本的控制面功能进行了融合和统一,同时控制面功能也分解成为多个独立的网络服务,这些独立的网络服务可以根据业务需求进行灵活的组合。每个网络服务和其他服务在业务功能上解耦,并且对外提供同一类型的服务化接口,向其他调用者提供服务,将多个耦合接口转变为同一类型的服务化接口,可以有效地减少接口数量,并统一服务调用方式,进而提升了网络的灵活性。

2.2 5GC核心网SBA架构

5GC SBA架构

  • NSSF:Network Slice Selection Function      网络切片选择功能
  • NEF:Network Exposure Function         网络能力开放功能
  • NRF:Network Repository Function         网络存储功能
  • PCF:Policy Control Function           策略控制功能
  • UDM:Unified Data Management         通用数据管理
  • AF:Application Function             应用功能
  • AUSF:Authentication Server Function       鉴权服务功能
  • AMF:Access and Mobility Management Function  接入与移动性管理功能
  • SMF:Session Management Function        会话管理功能
  • SCP:Service Communication Proxy        服务通信代理
  • UE:User Equipment               用户终端
  • RAN:RadioAccess Network           无线接入网
  • UPF:User Plane Function            用户面功能
  • DN:Data Network                数据网络

  在SBA架构中,每个核心网网元的接口统一命名为“N +小写英文功能名缩写”。例如,网络切片选择功能NSSF的接口为Nnssf;5G核心网网元的服务操作名称以接口名开始,例如,Nnssf_NSSelection表示NSSF的网络切片选择操作。除了统一的服务化接口外,5G网络仍然保留了少量的参考点接口,如下:

  • N1:NAS接口,用于发送NAS消息
  • N2:AN与AMF之间NG接口
  • N3:AN与UPF之间对接接口,采用GTP-U协议
  • N4:控制面SMF和用户面UPF分离的设备接口
  • N6:内部网络侧与外部网络侧协议接口,采用GTP-U协议
  • N9:两个UPF之间接口,采用GTP-U协议

2.3 服务化架构带来的优点

  相对于3G/4G的参考点设计,服务化架构使5G核心网各网元的功能模块化,接口统一化,结构简单化以及去中心化。

  • 功能模块化是指对网络功能进行细化,不再是一个网元集成多个功能,而是分解为独立的功能模块。各模块可以分租进行独立开发和快速迭代,使测试、发布软件能够更加地快捷、频繁和可靠。
  • 接口统一化是指各网元之间的通信不再是传统通信的处理机制,即同一设备与其他不同设备间采用不同的接口,服务化架构屏蔽了同一设备与不同设备之间接口的差异,对所有设备提供统一的服务接口,来自不同网元调用统一的服务接口与该网元进行通信。
  • 结构简单化是指提供服务的业务模块可以自注册、发布和发现,取消了传统设备间的耦合,简化了不同网元间的复杂联系,进而缩短了业务流程。将整个控制面功能分解为多个独立的网络服务,客户可以根据实际需求灵活选择不同网元进行切片组合,可以方便的进行扩容和缩容,有效降低了系统复杂度,节省了部署成本。
  • 去中心化是指让用户面网元摆脱以往4G“中心化”的限制,既可以部署于核心网(中心数据中心),也可部署于接入网(边缘数据中心),实现分布式部署。分布式部署可以缩短用户面数据传输距离,降低传输时延,带来更好的用户体验。

3. 总结

  微服务架构是一种架构,更是一种理念,任何先进的理念都将被不同行业和领域融合升级,相互推动,如同4G带来了移动互联网时代,移动互联网的快速发展带来的万物互联需求推动了5G的发展。时至今日,5G上云已经被越来越多的讨论,把传统的单体设备的设计、开发、发布、部署、运维向云上迁移,在边缘计算,网元云部署,海量数据存储和处理等方面,云原生与5G的关系将越来越密切。

有关【云原生与5G】微服务加持5G核心网的更多相关文章

  1. Observability:从零开始创建 Java 微服务并监控它 (二) - 2

    这篇文章是继上一篇文章“Observability:从零开始创建Java微服务并监控它(一)”的续篇。在上一篇文章中,我们讲述了如何创建一个Javaweb应用,并使用Filebeat来收集应用所生成的日志。在今天的文章中,我来详述如何收集应用的指标,使用APM来监控应用并监督web服务的在线情况。源码可以在地址 https://github.com/liu-xiao-guo/java_observability 进行下载。摄入指标指标被视为可以随时更改的时间点值。当前请求的数量可以改变任何毫秒。你可能有1000个请求的峰值,然后一切都回到一个请求。这也意味着这些指标可能不准确,你还想提取最小/

  2. 【云原生】SpringCloud-Spring Boot Starter使用测试 - 2

    目录SpringBootStarter是什么?以前传统的做法使用SpringBootStarter之后starter的理念:starter的实现: 创建SpringBootStarter步骤在idea新建一个starter项目、直接执行下一步即可生成项目。 在xml中加入如下配置文件:创建proterties类来保存配置信息创建业务类:创建AutoConfiguration测试如下:SpringBootStarter是什么? SpringBootStarter是在SpringBoot组件中被提出来的一种概念、简化了很多烦琐的配置、通过引入各种SpringBootStarter包可以快速搭建出一

  3. ruby - 如何让 Ruby 找到原生库? - 2

    我在/usr/local/lib中安装了一些本地库。我现在正在尝试安装一个需要这些的gem,以便正确构建,但是gem构建失败,因为它找不到图书馆。gem的extconf.rb文件试图确认它可以找到库have_library()但由于某种原因失败了。我尝试设置一堆环境变量,但似乎没有任何效果:irb(main):003:0>require'mkmf'=>trueirb(main):004:0>have_library('gecodesearch')checkingformain()in-lgecodesearch...no=>falseirb(main):005:0>ENV['LD_LI

  4. 【微服务笔记23】使用Spring Cloud微服务组件从0到1搭建一个微服务工程 - 2

    这篇文章,主要介绍如何使用SpringCloud微服务组件从0到1搭建一个微服务工程。目录一、从0到1搭建微服务工程1.1、基础环境说明(1)使用组件(2)微服务依赖1.2、搭建注册中心(1)引入依赖(2)配置文件(3)启动类1.3、搭建配置中心(1)引入依赖(2)配置文件(3)启动类1.4、搭建API网关(1)引入依赖(2)配置文件(3)启动类1.5、搭建服务提供者(1)引入依赖(2)配置文件(3)启动类1.6、搭建服务消费者(1)引入依赖(2)配置文件(3)启动类1.7、运行测试一、从0到1搭建微服务工程1.1、基础环境说明(1)使用组件这里主要是使用的SpringCloudNetflix

  5. 云原生(十八) | Kubernetes篇之Kubernetes(k8s)工作负载 - 2

    文章目录Kubernetes(k8s)工作负载一、Workloads二、Pod三、Deployment四、RC、RS、DaemonSet、StatefulSet五、Job、CronJob1、Job2、CronJob六、GCKubernetes(k8s)工作负载一、Workloads什么是工作负载(Workloads)工作负载是运行在Kubernetes上的一个应用程序。一个应用很复杂,可能由单个组件或者多个组件共同完成。无论怎样我们可以用一组Pod来表示一个应用,也就是一个工作负载Pod又是一组容器(Containers)所以关系又像是这样工作负载(Workloads)控制一组PodPod控制

  6. 若依框架解读(微服务版)——2.模块间的调用逻辑(ruoyi-api模块)(OpenFeign)(@innerAuth) - 2

    模块之间的关系我们可以了解到一共有这么多服务,我们先启动这三个服务其中rouyi–api模块是远程调用也就是提取出来的openfeign的接口ruoyi–commom是通用工具模块其他几个都是独立的服务ruoyi-api模块api模块当中有几个提取出来的OpenFeign的接口分别为文件,日志,用户服务我们以RemoteUserService接口为例子:其中contextId="remoteUserService"为bean的名称,value=ServiceNameConstants.SYSTEM_SERVICE为接口的描述,fallbackFactory=RemoteUserFallback

  7. iphone - iPhone 原生应用的测试驱动设计 - 2

    我正在试验iPhoneSDK并在Nic博士的rbiPhoneTest项目中做一些TDD。我想知道有多少人(如果有的话)成功地使用了这个或任何其他iPhone/Cocoa测试框架?更重要的是,我想知道如何最好地断言专有的二进制请求/响应协议(protocol)。这个想法是通过网络发送二进制请求并接收二进制响应。请求和响应是使用byteand'ing和or'ing创建的。我正在使用黄金副本模式来测试我的请求。这是我到目前为止所拥有的。不要笑,因为我是ObjectiveC和Ruby的新手:requireFile.dirname(__FILE__)+'/test_helper'require'

  8. 【微服务】ES使用实战·黑马旅游(五) - 2

    🚗Es学习·第五站~🚩Es学习起始站:【微服务】Elasticsearch概述&环境搭建(一)🚩本文已收录至专栏:微服务探索之旅👍希望您能有所收获一.引入综合前几站所学,我们已经对Elasticsearch的使用有了一定的了解,接下来让我们一起通过一个综合实战案例来复习前几站所学内容,体会在实际生产中的作用。我们一起实现如下功能:酒店搜索和分页酒店结果过滤我周边的酒店酒店竞价排名数据聚合筛选选项搜索框自动补全酒店数据的同步二.环境搭建按照第一站的学习部署Elasticsearch并启动运行。按照第二站的学习中的如下步骤,初始化测试项目并在Es导入数据。使用Elasticsearch,肯定离不开

  9. 【云原生 • Kubernetes】kubernetes 核心技术 - Ingress - 2

    本文导读一、前言二、Ingress和pod有什么关系三、使用Ingress对外暴露应用1.创建应用并使用NodePort暴露端口2.应用Ingress(1)部署IngressController(2)创建Ingress规则(3)在Windows系统的hosts文件添加域名访问规则一、前言在以往的操作过程中,我们都是将某端口号对外暴露,然后再使用IP+端口号进行访问服务,这是通过Service中的NodePort实现的。但是NodePort有着明显的缺陷:NodePort会在每一个node节点都启用一个端口,也就是说在集群中的任何一个node节点中,使用节点IP+端口号都能访问到该服务;每个端口

  10. javascript - 在网络浏览器中,窗口对象是原生 ECMAScript 对象吗? - 2

    ECMAScript规范定义了一个"uniqueglobalobjectthatiscreatedbeforecontrolentersanyexecutioncontext".此全局对象是ECMAScript的标准内置对象,因此是native对象。规范还指出:Inadditiontothepropertiesdefinedinthisspecificationtheglobalobjectmayhaveadditionalhostdefinedproperties.Thismayincludeapropertywhosevalueistheglobalobjectitself;for

随机推荐