OpenStack云计算(三)neutron
-
neutron 介绍:
Neutron 概述传统的网络管理方式很大程度上依赖于管理员手工配置和维护各种网络硬件设备;而云环境下的网络已经变得非常复杂,特别是在多户场景里,用户随时都可能需要创建、修改和删除网络,网络的连通性和隔离不已经太可能通过手工配置来保证了。
如何快速响应业务的需求对网络管理提出了更高的要求。传统的网络管理方式已经很难胜任这项工作,而"软件定义网络(softwaredefined networking,SDN)"所具有的灵活性和自动化优势使其成为云时代网络管理的主流。
Neutron的设计目标是实现"网络即服务( Networking as a Service )"。为了达到这一目标,在设计上遵循了基于SDN实现网络虚拟化的原则,在实现上充分利用了Linux系统上的各种网络相关的技术。
SDN模式服务-NeutronSDN(软件定义网络),通过使用它,网络管理员和云计算操作员可以通过程序来动态定义虚拟网络设备。Openstack网络中的SDN组件就是Quantum.但因为版权问题而改名为Neutron .
二.Neutron网络基本概念
(1)Network:
network是一个隔离的二层广播域。Neutron支持多种类型的network ,包括local, flat, VLAN, VxLAN和GRE.
Local:
local网络与其他网络和节点隔离。local网络中的instance只能与位于同一节点上同一网络的instance通信, local网络主要用于单机测试。
Flat:
flat网络是无vlan tagging的网络。flat网络中的instance能与位于同一网络的instance通信,并且可以跨多个节点。
Vlan:
vlan网络是具有802.1q tagging的网络。vlan是一个二层的广播域,同一vlan中的instance可以通信,不同vlan只能通过router通信。vlan网络可跨节点,是应用最广泛的网络类型。
Vxlan:
vxlan是基于隧道技术的overlay网络。vxlan网络通过唯一的segmentation ID (也叫VNI )与其他vxlan网络区分。vxlan中数据包会通过VNI封装成UDP包进行传输。因为二层的包通过封装在三层传输,能够克服vlan和物理网络基础设施的限制。
Gre
gre 是与 vxlan 类似的一种 overlay 网络。主要区别在于使用IP 包而非 UDP 进行封装。不同 network 之间在二层上是隔离的。
以vlan网络为例, network A和network B会分配不同的VLAN ID ,这样就保证了network A中的广播包不会跑到network B中。当然,这里的隔离是指二层上的隔离,借助路由器不同network是可能在三层上通信的。
network必须属于某个Project ( Tenant租户) , Project中可以创建多个network, network与Project之间是1对多关系。
- Subnet
subnet是一个IPv4或者IPv6地址段。instance的IP从subnet中分配。每个subnet需要定义IP地址的范围和掩码。
network与subnet是1对多关系。一个subnet只能属于某个network :一个network可以有多个subnet ,这些subnet可以是不同的IP 段,但不能重叠。
- Port
port可以看做虚拟交换机上的一个端口。port上定义了MAC地址和IP地址,当instance的虚拟网卡VIF ( Virtual Interface )绑定到port 时,port 会将 MAC 和IP 分配给 VIF.subnet与port是1对多关系。一个port必须属于某个subnet;一个subnet可以有多个port
Neutron 优点:
Openstack中的SDN组件架构也属于可插拔类型。通过各种插件可以管控不同种类的交换机、路由器、防火墙、负载均衡器并实现firewall as a service等许多功能。通过软件来定义的网络,可以对整个云计算设施进行更为精细的掌控。
Neutron由以下组件组成
Neutron Server
对外提供OpenStack网络API ,接收请求,并调用Plugin处理请求。
Lugin
处理Neutron Server发来的请求,维护OpenStack 逻辑网络状态,并调用Agent处理请求。Agent
处理Plugin的请求,负责在network provider上真正实现各种网络功能。
network provider
提供网络服务的虚拟或物理网络设备,例如Linux Bridge , Open vSwitch或者其他支持Neutron的物理交换机。
Queue
Neutron Server , Plugin和Agent之间通过Messaging Queue通信和调用。
Database
存放 OpenStack 的网络状态信息,包括 Network, Subnet,Port,Router 等。
安装并配置控制节点
完成下面的步骤以创建数据库:
用数据库连接客户端以 root 用户连接到数据库服务器:
$ mysql -u root -p
创建``neutron`` 数据库:
CREATE DATABASE neutron;
对``neutron`` 数据库授予合适的访问权限,使用合适的密码替换``NEUTRON_DBPASS``:
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' \ IDENTIFIED BY 'NEUTRON_DBPASS';GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' \ IDENTIFIED BY 'NEUTRON_DBPASS';
退出数据库客户端。
要创建服务证书,完成这些步骤:
创建``neutron``用户:prompt改为相应的密码
$ openstack user create --domain default --password-prompt neutron
添加``admin`` 角色到``neutron`` 用户:
$ openstack role add --project service --user neutron admin
创建``neutron``服务实体:
$ openstack service create --name neutron \--description "OpenStack Networking" network
创建网络服务API端点:controller替换成对应的服务端点名称
$ openstack endpoint create --region RegionOne \network public http://controller:9696$ openstack endpoint create --region RegionOne \network internal http://controller:9696$ openstack endpoint create --region RegionOne \network admin http://controller:9696
安装ovs软件包
yum install openstack-neutron openstack-neutron-ml2 openvswitch openstack-neutron-openvswitch ebtables -y ebtables
配置服务组件
编辑``/etc/neutron/neutron.conf`` 文件并完成如下操作:
在 [database] 部分,配置数据库访问:controller可以替换为自己的服务端点
[database]...connection = mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron
在``[DEFAULT]``部分,启用Modular Layer 2 (ML2)插件,路由服务和重叠的IP地址:
[DEFAULT]...core_plugin = ml2service_plugins = routerallow_overlapping_ips = True
在 “[DEFAULT]” 和 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息队列的连接:controller可以替换为自己的服务端点
[DEFAULT]...rpc_backend = rabbit[oslo_messaging_rabbit]...rabbit_host = controllerrabbit_userid = openstackrabbit_password = RABBIT_PASS
用你在RabbitMQ中为``openstack``选择的密码替换 “RABBIT_PASS”。
在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问:controller可以替换为自己的服务端点
[DEFAULT]...auth_strategy = keystone[keystone_authtoken]...auth_uri = http://controller:5000auth_url = http://controller:35357memcached_servers = controller:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = neutronpassword = NEUTRON_PASS
将 NEUTRON_PASS 替换为你在认证服务中为 neutron 用户选择的密码。
在``[DEFAULT]``和``[nova]``部分,配置网络服务来通知计算节点的网络拓扑变化:
[DEFAULT]...notify_nova_on_port_status_changes = Truenotify_nova_on_port_data_changes = True[nova]...auth_url = http://controller:35357auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultregion_name = RegionOneproject_name = serviceusername = novapassword = NOVA_PASS
使用你在身份认证服务中设置的``nova`` 用户的密码替换``NOVA_PASS``。
在 [oslo_concurrency] 部分,配置锁路径:
[oslo_concurrency]...lock_path = /var/lib/neutron/tmp
配置 Modular Layer 2 (ML2) 插件¶
ML2插件使用Linuxbridge机制来为实例创建layer-2虚拟网络基础设施
编辑``/etc/neutron/plugins/ml2/ml2_conf.ini``文件并完成以下操作
在``[ml2]``部分,启用flat,VLAN以及VXLAN网络:
[ml2]...type_drivers = flat,vlan,vxlan
在``[ml2]``部分,启用VXLAN私有网络:
[ml2]...tenant_network_types = vxlan
在``[ml2]``部分,启用Linuxbridge和layer-2机制:
[ml2]...mechanism_drivers = openvswitch,l2population
在``[ml2]`` 部分,启用端口安全扩展驱动:
[ml2]...extension_drivers = port_security
在``[ml2_type_flat]``部分,配置公共虚拟网络为flat网络
[ml2_type_flat]...flat_networks = provider
在``[ml2_type_vxlan]``部分,为私有网络配置VXLAN网络识别的网络范围:
[ml2_type_vxlan]...vni_ranges = 1:1000
在 ``[securitygroup]``部分,启用 ipset 增加安全组规则的高效性:
[securitygroup]...enable_ipset = True
编辑``/etc/neutron/plugins/ml2/openvswitch_agent.ini``文件并且完成以下操作:
如果是Linuxbridge 可以参考官方文档进行相应的配置
OpenStack Docs: 网络选项2:私有网络
[DEFAULT][agent]tunnel_types = vxlan12_population = True[ovs]tunnel_bridge = br-tunlocal_ip = 192.168.254.63bridge_mappings =[securitygroup]firewa11_driver = iptables_hybridenable_security_group = true
local_ip改为第二块网卡的ip
配置layer-3代理¶
Layer-3代理为私有虚拟网络提供路由和NAT服务
编辑``/etc/neutron/l3_agent.ini``文件并完成以下操作:
在``[DEFAULT]``部分,配置Linuxbridge接口驱动和外部网络网桥:
[DEFAULT]...interface_driver = openvswitchexternal_network_bridge =br-ex
配置DHCP代理¶
编辑``/etc/neutron/dhcp_agent.ini``文件并完成下面的操作:
在``[DEFAULT]``部分,配置Linuxbridge驱动接口,DHCP驱动并启用隔离元数据,这样在公共网络上的实例就可以通过网络来访问元数据
[DEFAULT]...interface_driver = openvswitchdhcp_driver = neutron.agent.linux.dhcp.Dnsmasqenable_isolated_metadata = True
配置元数据代理¶
The :term:`metadata agent <Metadata agent>`负责提供配置信息,例如:访问实例的凭证
编辑``/etc/neutron/metadata_agent.ini``文件并完成以下操作:
在``[DEFAULT]`` 部分,配置元数据主机以及共享密码:controller替换为自己的服务节点
[DEFAULT]...nova_metadata_ip = controllermetadata_proxy_shared_secret = METADATA_SECRET
用你为元数据代理设置的密码替换 METADATA_SECRET。
为计算节点配置网络服务¶
编辑``/etc/nova/nova.conf``文件并完成以下操作:
在``[neutron]``部分,配置访问参数,启用元数据代理并设置密码:
[neutron]...url = http://controller:9696auth_url = http://controller:35357auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultregion_name = RegionOneproject_name = serviceusername = neutronpassword = NEUTRON_PASSservice_metadata_proxy = Truemetadata_proxy_shared_secret = METADATA_SECRET
将 NEUTRON_PASS 替换为你在认证服务中为 neutron 用户选择的密码。
使用你为元数据代理设置的密码替换``METADATA_SECRET``
完成安装¶
网络服务初始化脚本需要一个超链接 /etc/neutron/plugin.ini``指向ML2插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini``。如果超链接不存在,使用下面的命令创建它:
# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
同步数据库:
# su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \--config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron
重启计算API 服务:
# systemctl restart openstack-nova-api.service
当系统启动时,启动 Networking 服务并配置它启动。
systemctl enable neutron-server.service neutron-dhcp-agent.service openvswitch neutron-openvswitch-agent neutron-metadata-agent.servicesystemctl start neutron-server.service neutron-dhcp-agent.service openvswitch neutron-openvswitch-agent neutron-metadata-agent.servicel
建立网桥并和网卡相连
ovs-vsctl add-br br-exovs-vsctl add-port br-ex eth2
启动代理并配置它开机自启动
systemctl enable neutron-13-agent.servicesystemctl start neutron-13-agent.service
查看neutron列表
Neutron agent-list 或 openstack network agent list
修改对外连接网络配置属性
将etc/sysconfig/network-script/ifcfg-eth2中的配置修改
BOOTPROTO=none
安装和配置计算节点
安装组件
(和官方文档不一样,需注意)))
yum install openvswitch openstack-neutron-openvswitch ebtables ipset -y
编辑``/etc/neutron/neutron.conf`` 文件并完成如下操作:
在``[database]`` 部分,注释所有``connection`` 项,因为计算节点不直接访问数据库。
在 “[DEFAULT]” 和 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息队列的连接:
[DEFAULT]...rpc_backend = rabbit[oslo_messaging_rabbit]...rabbit_host = controllerrabbit_userid = openstackrabbit_password = RABBIT_PASS
用你在RabbitMQ中为``openstack``选择的密码替换 “RABBIT_PASS”。将controller替换为自己的服务节点
在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问:
[DEFAULT]...auth_strategy = keystone[keystone_authtoken]...auth_uri = http://controller:5000auth_url = http://controller:35357memcached_servers = controller:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = neutronpassword = NEUTRON_PASS
将 NEUTRON_PASS 替换为你在认证服务中为 neutron 用户选择的密码。将controller替换为自己的服务节点
在 [oslo_concurrency] 部分,配置锁路径:
[oslo_concurrency]...lock_path = /var/lib/neutron/tmp
配置网络选项¶
编辑``/etc/neutron/plugins/ml2/openvswitch_agent.ini``文件并且完成以下操作:
在``[linux_bridge]``部分,将公共虚拟网络和公共物理网络接口对应起来:
[DEFAULT][agent]tunnel_types = vxlan12_population = True[ovs]tunnel_bridge = br-tunlocal_ip = 192.168.254.62bridge_mappings =[securitygroup]firewa11_driver = iptables_hybridenable_security_group = true[xenapi]
Local_ip替换为第二块网卡
为计算节点配置网络服务¶
编辑``/etc/nova/nova.conf``文件并完成下面的操作:
在``[neutron]`` 部分,配置访问参数
[neutron]...url = http://controller:9696auth_url = http://controller:35357auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultregion_name = RegionOneproject_name = serviceusername = neutronpassword = NEUTRON_PASS
将 NEUTRON_PASS 替换为你在认证服务中为 neutron 用户选择的密码。
完成安装¶
重启计算服务:
# systemctl restart openstack-nova-compute.service# systemctl status openstack-nova-compute.service
设置openvswitch 为开机自启动
systemctl start openvswitch neutron-openvswitch-agentsystemctl enable openvswitch neutron-openvswitch-agent
日志位置在var/log/文件夹里
相关文章:
OpenStack云计算(三)neutron
neutron 介绍: Neutron 概述传统的网络管理方式很大程度上依赖于管理员手工配置和维护各种网络硬件设备;而云环境下的网络已经变得非常复杂,特别是在多户场景里,用户随时都可能需要创建、修改和删除网络,网络的连通性和隔离不已经太可能通过手工配置来保证了。 如…...

Linux期末复习笔记
一、管理文件系统 1、文件系统类型 ext2:早期Linux中常用的文件类型。ext3:ext2的升级版,带日志功能。RAMFS:内存文件系统,速度很快。NFS:网络文件系统,由SUM发明,主要用于远程文件…...
PHP实现多继承
php支持多继承吗 不可以,只支持单继承。 可以使用 interface 或 trait 实现 。 实现方法 https://www.php.cn/faq/430197.html https://blog.58heshihu.com/index.php/archives/2288/...

pulsar原来是这样操作topic的
本篇主要讲述pulsar topic部分,主要从设计以及源码的视角进行讲述。在pulsar中,一个Topic的新建、扩容以及删除操作都是由Broker来处理的,而Topic相关的数据是存储在zookeeper上的。本篇文章模拟一个高效的学习流程进行展开 介绍使用方式(To…...

日常工作 经验总结
1,在使用vue2开发项目时,快捷有效的组件化component 若有参数传递时,可以通过这样传递 在component中: 2,上拉加载,下拉刷新 若是使用局部进行上拉加载 下拉刷新 且需要用到scroll-view时 那么需要切记scroll-view在内被mescroll-uni包裹。若场景有限 对于无数据显示…...

【Proteus仿真】【Arduino单片机】水箱液位监控系统
文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器,使用LCD1602液晶、按键、蜂鸣器、液位传感器、ADC转换器、水泵等。 主要功能: 系统运行后,LCD1602显示当前水位、上下限阈…...

【已解决】若依系统前端打包后,部署在nginx上,点击菜单错误:@/views/system/role/index
上面错误,是因为/views/system/role/index动态路由按需加载时候,错误导致。 解决办法: 如果您的前端项目访问时候,需要带有项目名称的话,参考凯哥上一篇文章:【已解决】若依前后端分离版本࿰…...
Java中compareTo方法使用
compareTo方法 1. compareTo方法参数2. compareTo方法返回值3. String类型使用CompareTo方法进行比较 compareTo 是实例方法,只能对象调用。所以不能比较基本类型 1. compareTo方法参数 public int compareTo(参数类型 值) {... }参数类型可以是一个 Byte, Double…...

【霹雳吧啦】手把手带你入门语义分割の番外11:U2-Net 源码讲解(PyTorch)—— 代码的使用
目录 前言 Preparation 一、U2-Net 网络结构图 二、U2-Net 网络源代码 1、train.py (1)parse_args 参数 (2)SODPresetTrain 类 (3)SODPresetEval 类 (4)main 函数 &#x…...

威尔仕2023年的统计数据
威尔仕健身房更新了2023年的统计数据,大家可以猜一猜我是哪一个称号?虽然小伙伴们的健身时长各有不同,有时候在课程中我也会分享自己健身的案例,看似一个简单的增强环路,旁边会有很多的调节环路来限制增强环路的增长&a…...

Spring——Spring基于注解的IOC配置
基于注解的IOC配置 学习基于注解的IOC配置,大家脑海里首先得有一个认知,即注解配置和xml配置要实现的功能都是一样的,都是要降低程序间的耦合。只是配置的形式不一样。 1.创建工程 1.1 pom.xml <?xml version"1.0" encoding…...
spring常用注解(一)springbean生命周期类
一、PostConstruct: 被PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器调用一次,类似于servlet的inti()方法。被PostConstruct修饰的方法会在构造函数之后,init()方法之前运行。...

【软件测试】2024年准备中/高级测试岗技术面试...
目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、软件测试基础知…...

第11课 实现桌面与摄像头叠加
在上一节,我们实现了桌面捕获功能,并成功把桌面图像和麦克风声音发送给对方。在实际应用中,有时候会需要把桌面与摄像头图像叠加在一起发送,这节课我们就来看下如何实现这一功能。 1.备份与修改 备份demo10并修改demo10为demo11…...

SAP 检验批状态修改(QA32质检放行报错:BS002 不允许 “访问使用决定“ (INL 101105415 ))
问题:在做QA32进行使用决策处理的时候发现这个报错: BS002 不允许 "访问使用决定" (INL 101105415 ) 原因:是因为这个检验批的状态已经变成Relase的状态了,但是决策还没有做 解决方案:将这个检验批的REL状态…...

华为交换机如何同时配置多个端口参数
知识改变命运,技术就是要分享,有问题随时联系,免费答疑,欢迎联系! 华为交换机如何批量配置端口 使用端口组功能可以实现一次配置多个端口,以减少重复配置工作。端口组分为如下两种方式: 永久端口组。如果用户需要多次…...

Mybatis之多表查询
目录 一、简介 1、使用嵌套查询: 2、使用多个 SQL 语句: 3、使用关联查询: 4、使用自定义映射查询: 二、业务场景 三、示例 1、一对一查询 2、一对多查询 一、简介 MyBatis 是一个优秀的持久层框架,它提供了强大的支持来执…...

部署node.js+express+mongodb(更新中)
1-Linux服务器部署MongoDB 1.升级 yum -y update 2.下载MongoDB安装包 3.上传安装包 上传目录 : /usr/local/ 2-配置MongoDB环境变量并启动 1.配置环境变量全局启动 vi ~/.bash_profile 使用i命令进入编辑模式 添加: export PATH/usr/local/mongodb/bin:$P…...

百度CTO王海峰:文心一言用户规模破1亿
“文心一言用户规模突破1亿。”12月28日,百度首席技术官、深度学习技术及应用国家工程研究中心主任王海峰在第十届WAVE SUMMIT深度学习开发者大会上宣布。会上,王海峰以《文心加飞桨,翩然赴星河》为题作了主旨演讲,分享了飞桨和文…...

简单最短路径算法
前言 图的最短路径算法主要包括: 有向无权图的单源最短路径 宽度优先搜索算法(bfs) 有向非负权图的单源最短路径 迪杰斯特拉算法(Dijkstra) 有向有权图的单源最短路径 贝尔曼福特算法(Bellman-Ford&#…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...

基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...

Golang——9、反射和文件操作
反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一:使用Read()读取文件2.3、方式二:bufio读取文件2.4、方式三:os.ReadFile读取2.5、写…...

《Docker》架构
文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器,docker,镜像,k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...
全面解析数据库:从基础概念到前沿应用
在数字化时代,数据已成为企业和社会发展的核心资产,而数据库作为存储、管理和处理数据的关键工具,在各个领域发挥着举足轻重的作用。从电商平台的商品信息管理,到社交网络的用户数据存储,再到金融行业的交易记录处理&a…...