首页 文章 精选 留言 我的

精选列表

搜索[离线容错],共8796篇文章
优秀的个人博客,低调大师

如何实现十亿级离线 CSV 导入 Nebula Graph

本文首发于 Nebula Graph Community 公众号 本次实践是基于业务需求及后续扩展,通过技术选型确定了 Nebula Graph 图数据库,首先需要验证 Nebula Graph 数据库在实际业务场景下批量导入性能并验证。通过 Spark On Yarn 分布式任务执行导入工作,CSV 文件放在 HDFS 上,分享下个人 Nebula Spark Connector 最佳实践。。 一、Nebula Spark Connector 概念、适用场景、优势 这里不做赘述,仅截图展示,更多详情参考文档:https://docs.nebula-graph.com.cn/nebula-spark-connector/。 二、环境信息 硬件环境 名称 值 推荐 本地磁盘 SSD 2 T 至少 2 T CPU 16 C * 4 128 C 内存 128 GB 128 G 软件环境 名称 版本号 Nebula Graph 3.0.0 Nebula Spark Connector 3.0.0 Hadoop 2.7.2U17-10 Spark 2.4.5U5 数据量级 名称 值 数据量 200 G 实体 Vertext 9.3 亿 关系 Edge 9.7 亿 三、部署方案 部署方式:分布式,3 个节点 参考官网即可:https://docs.nebula-graph.com.cn/3.0.1/4.deployment-and-installation/2.compile-and-install-nebula-graph/deploy-nebula-graph-cluster/ 大体也就三部曲: 下载内核 RPM 包并安装; 批量修改配置文件; 启动集群服务。 以下操作使用的 root,非 root 就加个 sudo 执行即可。 下载 Nebula Graph RPM 包并安装 执行下面命令: wget https://os-cdn.nebula-graph.com.cn/package/3.0.0/nebula-graph-3.0.0.el7.x86_64.rpm wget https://oss-cdn.nebula-graph.com.cn/package/3.0.0/nebula-graph-3.0.0.el7.x86_64.rpm.sha256sum.txt rpm -ivh nebula-graph-3.0.0.el7.x86_64.rpm 注:默认安装路径:/usr/local/nebula/,务必保证所在磁盘空间充足。 批量修改配置文件 sed -i 's?--meta_server_addrs=127.0.0.1:9559?--meta_server_addrs=172.16.8.15:9559,172.16.8.176:9559,172.16.10.149:9559?g' *.conf sed -i 's?--local_ip=127.0.0.1?--local_ip=172.16.10.149?g' *.conf sed -i 's?--meta_server_addrs=127.0.0.1:9559?--meta_server_addrs=172.16.8.15:9559,172.16.8.176:9559,172.16.10.149:9559?g' *.conf sed -i 's?--local_ip=127.0.0.1?--local_ip=172.16.8.15?g' *.conf sed -i 's?--meta_server_addrs=127.0.0.1:9559?--meta_server_addrs=172.16.8.15:9559,172.16.8.176:9559,172.16.10.149:9559?g' *.conf sed -i 's?--local_ip=127.0.0.1?--local_ip=172.16.8.176?g' *.conf 注:ip 地址是内网地址,用来集群间通信。 启动之后,增加 Storage 服务: ADD HOSTS 172.x.x.15:9779,172.1x.x.176:9779,172.x.1x.149:9779; 注:增加 Storage 服务为 v3.x 版本以上所需操作,如果你使用的是 v2.x 可忽略本步骤。 启动集群服务 /usr/local/nebula/scripts/nebula.service start all 上述命令启动服务,执行下面命令检查服务是否启动成功: ps aux|grep nebula 结果如下 3 个服务进程: /usr/local/nebula/bin/nebula-metad --flagfile /usr/local/nebula/etc/nebula-metad.conf /usr/local/nebula/bin/nebula-graphd --flagfile /usr/local/nebula/etc/nebula-graphd.conf /usr/local/nebula/bin/nebula-storaged --flagfile /usr/local/nebula/etc/nebula-storaged.conf 注:如果少于 3 个,就多执行几次 /usr/local/nebula/scripts/nebula.service start all,再不行就 restart。 三、可视化服务 我选择的是 Nebula Graph Studio,访问:http://n01v:7001 即可使用 Studio(注:这里是我自己的网络环境,读者不可访问) 登录:10.x.x.1(任意节点):9669 用户名/密码:root/nebula 这里可以阅读下官方文档的常用 nGQL 命令:https://docs.nebula-graph.com.cn/3.0.1/2.quick-start/4.nebula-graph-crud 开始使用 Nebula Graph 注册 Nebula 集群: ADD HOSTS 172.x.x.121:9779, 172.16.11.218:9779,172.16.12.12:9779; 列出所有节点,查看 STATUS 列是否为 ONLINE,可通过 SHOW HOSTS; 或 SHOW HOSTS META;。 创建 Space,等价于传统数据库 database: CREATE SPACE mylove (partition_num = 15, replica_factor = 3, vid_type = FIXED_STRING(256));//分区数推荐为节点数的5倍关系,副本数为基数,一般设置为3,vid如果为string类型,长度尽量够用就行,否则占用磁盘空间太多。 创建 Tag,等价于实体 Vertex: CREATE TAG entity (name string NULL, version string NULL); 创建 Edge,等价于关系 Edge: CREATE EDGE relation (name string NULL); 查询时,务必添加 LIMIT,否则容易查死库: match (v) return v limit 100; 四、(本文重点)使用 Spark Connector 读取 CSV 及入库 这里可以参考 2 份资料: 官方的 NebulaSparkWriterExample(scala-json 格式):https://github.com/vesoft-inc/nebula-spark-utils/blob/master/example/src/main/scala/com/vesoft/nebula/examples/connector/NebulaSparkWriterExample.scala 大神提供的 NebulaSparkWriterExample(java-json格式):https://www.jianshu.com/p/930e0343a28c 附上 NebulaSparkWriterExample 的示例代码: import com.facebook.thrift.protocol.TCompactProtocol import com.vesoft.nebula.connector.{ NebulaConnectionConfig, WriteMode, WriteNebulaEdgeConfig, WriteNebulaVertexConfig } import org.apache.spark.SparkConf import org.apache.spark.sql.SparkSession import org.slf4j.LoggerFactory object NebulaSparkWriter { private val LOG = LoggerFactory.getLogger(this.getClass) var ip = "" def main(args: Array[String]): Unit = { val part = args(0) ip = args(1) val sparkConf = new SparkConf sparkConf .set("spark.serializer", "org.apache.spark.serializer.KryoSerializer") .registerKryoClasses(Array[Class[_]](classOf[TCompactProtocol])) val spark = SparkSession .builder() .master("local") .config(sparkConf) .getOrCreate() spark.sparkContext.setLogLevel("WARN") if("1".equalsIgnoreCase(part)) writeVertex(spark) if("2".equalsIgnoreCase(part)) writeEdge(spark) spark.close() } def getNebulaConnectionConfig(): NebulaConnectionConfig = { val config = NebulaConnectionConfig .builder() .withMetaAddress(ip + ":9559") .withGraphAddress(ip + ":9669") .withTimeout(Integer.MAX_VALUE) .withConenctionRetry(5) .build() config } def writeVertex(spark: SparkSession): Unit = { LOG.info("start to write nebula vertices: 1 entity") val df = spark.read.option("sep", "\t").csv("/home/2022/project/origin_file/csv/tag/entity/").toDF("id", "name", "version") val config = getNebulaConnectionConfig() val nebulaWriteVertexConfig: WriteNebulaVertexConfig = WriteNebulaVertexConfig .builder() .withSpace("mywtt") .withTag("entity") .withVidField("id") .withVidAsProp(false) .withUser("root") .withPasswd("nebula") .withBatch(1800) .build() df.coalesce(1400).write.nebula(config, nebulaWriteVertexConfig).writeVertices() } def writeEdge(spark: SparkSession): Unit = { LOG.info("start to write nebula edges: 2 entityRel") val df = spark.read.option("sep", "\t").csv("/home/2022/project/origin_file/csv/out/rel/relation/").toDF("src", "dst", "name") val config = getNebulaConnectionConfig() val nebulaWriteEdgeConfig: WriteNebulaEdgeConfig = WriteNebulaEdgeConfig .builder() .withSpace("mywtt") .withEdge("relation") .withSrcIdField("src") .withDstIdField("dst") .withSrcAsProperty(false) .withDstAsProperty(false) .withUser("root") .withPasswd("nebula") .withBatch(1800) .build() df.coalesce(1400).write.nebula(config, nebulaWriteEdgeConfig).writeEdges() } } 重点详解 NebulaSparkWriterExample 示例代码 这里讲解一些函数项: spark.sparkContext.setLogLevel("WARN"):设置日志打印级别,防止 INFO 干扰; withTimeout(Integer.MAX_VALUE):连接超时时间尽量大一些,默认为 1 分钟,超时次数大于重试次数后,Spark 任务就失败了; option("sep", "\t"):指定 CSV 文件的分隔符,否则就默认为 1 列了; toDF("src", "dst", "name"):数据集指定 Schema,即 Dataset<Row> 转 DataFrame,否则就不能指定 VidField 了; withVidField("id"):因为该函数只支持设置列名称,所以必须定义 Schema; withVidAsProp(false):默认 ID 为 VID 字段,数据就不用重复存储为属性了,占用磁盘空间; withSrcIdField("src"):设置起始节点的 IdField; withDstIdField("dst"):设置终止节点的 IdField; withSrcAsProperty(false):节省空间 withDstAsProperty(false):节省空间 withBatch(1000):批量大小,WriteMode.UPDATE 默认 <=512,WriteMode.INSERT 可以设置大一些(千兆网卡/带宽 5Gbps /本地 SSD = 1500) coalesce(1500):可根据任务并发数调节。单个 partition 数据量过大,容易导致 executor OOM; 五、提交任务到 Spark 集群 nohup spark-submit --master yarn --deploy-mode client --class com.xxx.nebula.connector.NebulaSparkWriter --conf spark.dynamicAllocation.enabled=false --conf spark.executor.memoryOverhead=10g --conf spark.blacklist.enabled=false --conf spark.default.parallelism=1000 --driver-memory 10G --executor-memory 12G --executor-cores 4 --num-executors 180 ./example-3.0-SNAPSHOT.jar > run-csv-nebula.log 2>&1 & 辅助监控 iotop 命令 Total DISK READ : 26.61 K/s | Total DISK WRITE : 383.77 M/s Actual DISK READ: 26.61 K/s | Actual DISK WRITE: 431.75 M/s 辅助监控 top 命令 top - 16:03:01 up 8 days, 28 min, 1 user, load average: 6.16, 6.53, 4.58 Tasks: 205 total, 1 running, 204 sleeping, 0 stopped, 0 zombie %Cpu(s): 28.3 us, 14.2 sy, 0.0 ni, 56.0 id, 0.6 wa, 0.0 hi, 0.4 si, 0.5 st KiB Mem : 13186284+total, 1135004 free, 31321240 used, 99406592 buff/cache KiB Swap: 0 total, 0 free, 0 used. 99641296 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 27979 root 20 0 39.071g 0.026t 9936 S 564.6 20.8 83:22.03 nebula-storaged 27920 root 20 0 2187476 804036 7672 S 128.2 0.6 17:13.75 nebula-graphd 27875 root 20 0 6484644 1.990g 8588 S 58.5 1.6 14:14.22 nebula-metad 其他资源监控 服务优化 nebula-storaged.conf 配置优化 这里我修改了 nebula-storaged.conf 配置项: # 一个批处理操作的默认保留字节 --rocksdb_batch_size=4096 # BlockBasedTable中使用的默认块缓存大小 # 单位为 MB. 服务器内存128G,一般设置为三分之一 --rocksdb_block_cache=44024 ############## rocksdb Options ############## --rocksdb_disable_wal=true # rocksdb DBOptions在json中,每个option的名称和值都是一个字符串,如:“option_name”:“option_value”,逗号分隔 --rocksdb_db_options={"max_subcompactions":"3","max_background_jobs":"3"} # rocksdb ColumnFamilyOptions在json中,每个option的名称和值都是字符串,如:“option_name”:“option_value”,逗号分隔 --rocksdb_column_family_options={"disable_auto_compactions":"false","write_buffer_size":"67108864","max_write_buffer_number":"4","max_bytes_for_level_base":"268435456"} # rocksdb BlockBasedTableOptions在json中,每个选项的名称和值都是字符串,如:“option_name”:“option_value”,逗号分隔 --rocksdb_block_based_table_options={"block_size":"8192"} # 每个请求最大的处理器数量 --max_handlers_per_req=10 # 集群间心跳间隔时间 --heartbeat_interval_secs=10 --raft_rpc_timeout_ms=5000 --raft_heartbeat_interval_secs=10 --wal_ttl=14400 # 批量大小最大值 --max_batch_size=1800 # 参数配置减小内存应用 --enable_partitioned_index_filter=true # 数据在最底层存储层间接做了过滤,生产环境防止遇到查到超级节点的困扰 --max_edge_returned_per_vertex=10000 Linux 系统优化 ulimit -c unlimited ulimit -n 130000 sysctl -w net.ipv4.tcp_slow_start_after_idle=0 sysctl -w net.core.somaxconn=2048 sysctl -w net.ipv4.tcp_max_syn_backlog=2048 sysctl -w net.core.netdev_max_backlog=3000 sysctl -w kernel.core_uses_pid=1 六、验证导入结果 SUBMIT JOB STATS; SHOW JOB ${ID} SHOW STATS; 实体插入速率大约 27,837 条/s (仅适用本次导入性能计算) 关系插入速率大约 26,276 条/s (仅适用本次导入性能计算) 如果服务器配置更好,性能会更好;另外带宽、是否跨数据中心、磁盘 IO 也是影响性能因素,甚至是网络波动等。 [root@node02 nebula]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 50G 2.2G 48G 5% / /dev/sdb1 2.0T 283G 1.6T 16% /usr/local/nebula tmpfs 13G 0 13G 0% /run/user/62056 七、性能测试 根据属性查询指定节点: MATCH (v:entity) WHERE v.entity.name == 'Lifespan' RETURN v; 执行时间消耗 0.002558 (s) 一跳 MATCH (v1:entity)-[e:propertiesRel]->(v2:attribute) WHERE id(v1) == '70da43c5e46f56c634547c7aded3639aa8a1565975303218e2a92af677a7ee3a' RETURN v2 limit 100; 执行时间消耗 0.003571 (s) 两跳 MATCH p=(v1:entity)-[e:propertiesRel*1..2]->(v2) WHERE id(v1) == '70da43c5e46f56c634547c7aded3639aa8a1565975303218e2a92af677a7ee3a' RETURN p; 执行时间消耗 0.005143 (s) 获取边的所有属性值 FETCH PROP ON propertiesRel '70da43c5e46f56c634547c7aded3639aa8a1565975303218e2a92af677a7ee3a' -> '0000002d2e88d7ba6659db83893dedf3b8678f3f80de4ffe3f8683694b63a256' YIELD properties(edge); 执行时间消耗 0.001304 (s) match p=(v:entity{name:"张三"})-[e:entityRel|propertiesRel*1]->(v2) return p; 执行时间消耗 0.02986 (s) match p=(v:entity{name:"张三"})-[e:entityRel|propertiesRel*2]->(v2) return p; 执行时间消耗 执行时间消耗 0.07937 (s) match p=(v:entity{name:"张三"})-[e:entityRel|propertiesRel*3]->(v2) return p; 执行时间消耗 0.269 (s) match p=(v:entity{name:"张三"})-[e:entityRel|propertiesRel*4]->(v2) return p; 执行时间消耗 3.524859 (s) match p=(v:entity{name:"张三"})-[e:entityRel|propertiesRel*1..2]->(v2) return p; 执行时间消耗 0.072367 (s) match p=(v:entity{name:"张三"})-[e:entityRel|propertiesRel*1..3]->(v2) return p; 执行时间消耗 0.279011 (s) match p=(v:entity{name:"张三"})-[e:entityRel|propertiesRel*1..4]->(v2) return p; 执行时间消耗 3.728018 (s) 查询点A_vid到点B_vid的最短路径(双向),携带点和边的属性: FIND SHORTEST PATH WITH PROP FROM "70da43c5e46f56c634547c7aded3639aa8a1565975303218e2a92af677a7ee3a" TO "0000002d2e88d7ba6659db83893dedf3b8678f3f80de4ffe3f8683694b63a256" OVER * BIDIRECT YIELD path AS p; 执行时间消耗 0.003096 (s) FIND ALL PATH FROM "70da43c5e46f56c634547c7aded3639aa8a1565975303218e2a92af677a7ee3a" TO "0000002d2e88d7ba6659db83893dedf3b8678f3f80de4ffe3f8683694b63a256" OVER * WHERE propertiesRel.name is not EMPTY or propertiesRel.name >=0 YIELD path AS p; 执行时间消耗 0.003656 (s) 八、遇到的问题: 1.guava 依赖包版本冲突问题 Caused by: java.lang.NoSuchMethodError: com.google.common.base.Stopwatch.createStarted()Lcom/google/common/base/Stopwatch; 经排查发现依赖的一个模块使用 guava 版本 22.0,而 Spark 集群自带 14.0,导致冲突,而无法正常工作。运行在 Spark 集群上的任务,Spark 加载 guava 包优先级高于自己的包。 我们依赖的包使用到 guava 版本 22.0 中比较新的方法,而在 14.0 版本还没有这样的方法。在不能修改对方代码的前提下,有如下方案: spark 集群的包升级一下,风险较高,容易造成未知问题。 另外一种方式是利用 Maven 插件重命名自己的 guava 包。 这里采用了第二种方式,利用 Maven 插件 shade(链接:https://maven.apache.org/plugins/maven-shade-plugin/)重命名包解决问题。 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.2.4</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <relocations> <relocation> <pattern>com.google.common</pattern> <shadedPattern>my_guava.common</shadedPattern> </relocation> </relocations> <filters> <filter> <artifact>*:*</artifact> <excludes> <exclude>META-INF/maven/**</exclude> <exclude>META-INF/*.SF</exclude> <exclude>META-INF/*.DSA</exclude> <exclude>META-INF/*.RSA</exclude> </excludes> </filter> </filters> </configuration> </execution> </executions> </plugin> 2.Spark 黑名单机制问题 Blacklisting behavior can be configured via spark.blacklist.*. spark.blacklist.enabled,默认值 false。如果这个参数这为 true,那么 Spark 将不再会往黑名单里面的执行器调度任务。黑名单算法可以由其他 spark.blacklist 配置选项进一步控制,详情参见下面的介绍。 交流反馈 *欢迎到论坛与作者讨论交流:https://discuss.nebula-graph.com.cn

优秀的个人博客,低调大师

Centos 下离线rpm包安装mysql5.7

1 . 安装新版mysql前,需将系统自带的mariadb-lib卸载。 [root@wst-test02 bbders]# rpm -qa|grep mariadb mariadb-libs-5.5.44-2.el7.centos.x86_64 [root@wst-test02 bbders]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64 2 . 上传压缩包并解压。 解压后得到如下安装包: 3 . 使用rpm -ivh命令依次进行安装;以下步骤需要root权限。且因包之间的依赖关系,各rpm命令必须按序执行。 rpm -ivh mysql-community-common-5.7.20-1.el7.x86_64.rpm rpm -ivh mysql-community-libs-5.7.20-1.el7.x86_64.rpm rpm -ivh mysql-community-client-5.7.20-1.el7.x86_64.rpm rpm -ivh mysql-community-server-5.7.20-1.el7.x86_64.rpm #### 安装mysql-community-server-5.7.20-1.el7.x86_64.rpm前需要安装libaio-0.3.107-10.el6.x86_64.rpm 下载地址:http://mirror.centos.org/centos/6/os/x86_64/Packages/libaio-0.3.107-10.el6.x86_64.rpm rpm -ivh libaio-0.3.107-10.el6.x86_64.rpm(若在有网情况下可执行yum install libaio) 安装成功后,也可把安装文件和临时文件删除。 rm mysql-5.7.20-1.el7.x86_64.rpm-bundle.tar 4 . 初始化数据库。 // 指定datadir, 执行后会生成~/.mysql_secret密码文件 [root@wst-test02 bbders]# mysql_install_db --datadir=/var/lib/m // 初始化,执行生会在/var/log/mysqld.log生成随机密码 [root@wst-test02 bbders]# mysqld --initialize 5 .创建用户和用户组 [root@wst-test02 bbders]# groupadd mysql [root@wst-test02 bbders]# useradd -g mysql -r mysql [root@wst-test02 bbders]# chown mysql:mysql /var/lib/mysql -R // 将mysql安装目录赋给mysql [root@wst-test02 bbders]# systemctl start mysqld.service // 重启mysql 6 .修改密码 由于一开始并不知道密码,先修改配置文件/etc/my.cnf令MySQL跳过登录时的权限检验。加入一行:skip-grant-tables 重启MySQL: systemctl restart mysqld 免密码登录MySQL: mysql -uroot -p ## 连续敲两下'回车键' 修改root用户密码: UPDATE user SET authentication_string = password('your-password') WHERE host = 'localhost' AND user = 'root'; 最后修改配置文件/etc/my.cnf删除此前新增那一行skip-grant-tables,并重启MySQL。这一步非常重要,不执行可能导致严重的安全问题。 补充报错处理: 解决方式:chown mysql:mysql -R /var/lib/mysql

优秀的个人博客,低调大师

15 大分论坛不容错过,GOTC 2023 即将拉开帷幕!

全球开源技术峰会(Global Open-source Technology Conference), GOTC 2023 由开放原子开源基金会、 Linux 基金会亚太区、上海浦东软件园和开源中国联合发起, 将于5月27日至28日在上海张江科学会堂隆重举行。当前,大会 报名通道已开启: https://www.bagevent.com/event/8387611 为期 2 天的开源行业盛会,将以行业展览、主题发言、特别论坛、分论坛、快闪演讲的形式来诠释此次大会主题 ——“Open Source, Into the Future”。与会者将一起探讨元宇宙、3D 与游戏、eBPF、Web3.0、区块链等热门技术主题,以及 OSPO、汽车软件、AIGC、开源教育培训、云原生、信创等热门话题,探讨开源未来,助力开源发展。 2021 年首届 GOTC 圆满举办,获得热烈反响。 GOTC 2023 由一个主论坛、十五个分论坛组成,在线下举办的同时,还将在线上直播。 本次大会将邀请 LF AI & Data 基金会执行董事、PyTorch 基金会执行董事 Ibrahim Haddad,OpenSSF 总经理 Brian Behlendorf,Open 3D 基金会执行董事 Royal O'Brien,Hyperledger 基金会执行董事 Daniela Barbosa,OpenJS 基金会执行董事 Robin Ginn 以及来自百度、华为、腾讯、火山引擎、红帽亚太、开源中国等企业的全球开源重磅嘉宾出席,为开发者、为行业分享开源的观点、经验借鉴与未来探索。 关注到开源生态中近年来最新的发展趋势,GOTC 2023 特别策划了 DevOps 前线、 Web3 元宇宙世界、Linux 基金会开源教育及人才培养峰会、OSPOCon、信创、聚焦开源安全、Rust、数据与数据库技术、软件定义汽车、开源商业、eBPF、AI is Everywhere、Cloud Native Summit、基础设施与软件架构、大前端新趋势等十五个开源热门主题,开源大牛们将轮番上阵,激荡思想火花。 DevOps 前线 DevOps 是一种促进开发、运维和质量保证之间协作与整合的理念和实践,旨在提高软件交付的速度、质量和效率。经过十多年的发展,DevOps 已经拓展了到了安全、数据、人工智能等各领域。本论坛将探讨最前沿的 DevOps 理论、技术与实践,以应对软件开发的不断面临的变化和挑战。 Web3 元宇宙世界 自 2021 年起 Web 3.0 和元宇宙逐步成为全球科技界的热门概念,科技巨头如 Meta、谷歌、苹果、华为、腾讯、OPPO 等均已在积极布局相关产业,其中一个关键技术就是 3D 引擎,无论是智慧城市、构建虚拟空间、工业设计还是高度真实的沉浸式用户体验都离不开强大的 3D 引擎技术。本论坛从开源技术出发,将带领观众通过畅游 3D 元宇宙世界。除此之外,本论坛将带领观众畅玩 3D 与游戏世界,领略 3D 与游戏技术, 并探讨商业在该领域的探索与落地。 Linux 基金会开源教育及人才培养峰会 在最近的 Linux 基金会的开源工作岗位报告中,鉴于各行业持续采用云计算和进行数字化转型,对开源人才的需求非常强烈。邀请各界的开源大咖在到 GOTC,一起探讨国内开源教育和人才培养源教育的挑战,把握最热门的开源技术,帮助开发者会了解进入开源圈的途径,开启开源事业。 OSPOCon “我们本土的企业,每家的实力都很强,不仅有大量的贡献,也开源出很多项目,但是有一项尚不足,那就是企业之间在开源方面的合作还有很大的上升空间。”CNCF 大中华区总监 Keith Chan 在一次直播活动中如此总结道。数字世界的协作和竞争的逻辑是完全不同于我们过去的工业时代的,对于大型的软件工程,或者是依赖链条更长的生产项目,其工程消耗、维护成本、创新推进都不是某一家商业公司能够去独立完成的,而是要汇聚更多企业合力打造。这也就意味着和信息技术相关的企业需要学会合作,很多情况可能是业务上竞争,但是需要在基础设施上合作,毫无疑问这对于企业提出了更高的要求。借 GOTC 2023 的大势,我们想邀请本土企业的 OSPO 相关从业人员,一起商讨这个巨大的难题。旨在为接下来的本土开源推进重要的一步。 我们会围绕一下主题进行: OSPO 在开源项目上的企业合作有何作用? 企业之间的 OSPO 应该如何互动? 利益该如何计算? OSPO 如何在内部说服决策层、业务部门 企业对于中立组织和机构的要求和期望 信创 此论坛关注中国信创产业的发展现状和未来方向,目的是推动信创领域的政策、技术、生态和人才的发展。信创产业是指以信息技术应用为核心,以自主可控为目标,以芯片、存储、操作系统、数据库等关键软硬件技术为支撑的产业。在信创论坛上,你可以获取最新的信创政策信息、技术动态、市场数据和竞争情况,与来自各个领域的政府、企业、学术等代表进行深入的对话和合作。 聚焦开源安全 开源软件在数据中心、消费者设备和应用程序中无处不在。使用开源代码已经成为软件开发的新常态,统计显示,一个软件平均有 90% 的代码源自开源,保证开源供应链安全已经远超出了一般开发者的能力。开源安全需要业界共同联手,为行业打造自动化工具、总结最佳实践、推动安全教育和鼓励开源安全协作。您将会在这个特别论坛听到来自全球的开源安全专家和用户的分享。我们诚邀所有开源用户、贡献者和社区成员参加这次聚会。 Rust 凭借可靠性好、工程性强、安全性高等特性,Rust 编程语言近年来成为开发者的新宠。本论坛将邀请 Rust 专家为大家分享 Rust 在实际使用中的技巧,以及语言相关生态的发展情况等内容。 数据与数据库技术 互联网与物联网不断发展,针对海量数据的处理技术层出不穷并不断成熟。在这个过程中,大数据、流式数据、数据库变得越来越紧密,本论坛将围绕数据技术,带领观众走向当前的技术前沿。 软件定义汽车 本论坛旨在为汽车行业的专业人士、学者和爱好者提供一个交流和分享关于软件定义汽车的最新技术、趋势和思想的平台。在 EE 架构的进化和域控集中化的发展趋势下,软件比重越来越大,影响了汽车的研发模式、开发流程、整体成本以及后市场运营模式,需要我们从整体科技的视角,重新审视汽车工业,让快速更迭的软件开发模式赋能汽车工程,为产业带来新的生产方式,也为汽车产品带来新的创意和发展方向。本论坛将邀请在这个交叉领域的探索者们分享他们不同的见解,共同讨论软件与汽车的未来发展与挑战。无论您是从事汽车技术的哪一个环节,都欢迎您的参与和交流! 开源商业 开源商业是经久不衰的热点话题。本论坛将分享依托开源进行商业化的成功案例,企业要如何利用开源创造价值和竞争力。除此之外,还会深入讲解企业开源商业化过程中面临的开源协议、开源合规等各方面的挑战。 eBPF eBPF (extended Berkeley Packet Filter) 是 Linux 内核中一个非常灵活且高效的类虚拟机组件,能够直接运行在 Linux 内核态,第一时间能够完成对数据包、系统调用等处理,避免了内核态和用户态之间的切换和数据拷贝开销。由于 eBPF 具有很强的安全性和稳定性,已经有越来越多的基于 eBPF 的项目如雨后春笋般蓬勃涌现。目前,很多内核子系统都已经使用了 eBPF,例如常见的网络、负载均衡、跟踪与安全等领域。此外,一些应用广泛的开源项目,如 Cilium、Falco、Bcc、Katran、Bpftrace、Kubectl-trace 等均采用了该技术。此论坛将一览无余地展现 eBPF 技术,并分享如何将其结合到实际工作中。 AI is Everywhere AI 赋能万物的时代已经到来。预计到 2025 年,AI 赋能设备的数量将增长到 7500 万台,并会影响到每个行业和工作。每个种类的 AI 应用都可能会有一套自己的开发生态和架构。对于企业来说这种模式意味着高维护成本和高安全风险,并限制了企业 AI 新技术的应用和创新的步伐。LF AI & DATA 开源社区一直致力于打造一个全球化的 AI 技术和开发者生态,我们诚邀所有的开源 AI 用户、贡献者和社区成员参加这次聚会,共同探讨开源 AI 的未来。 Cloud Native Summit Cloud Native Summit 是 CNCF 的旗舰会议,峰会聚集了全球领先开源社区和云原生社区的使用者和技术大咖。相约 2023 年 GOTC 上的 Cloud Native Summit China,共同探讨云原生计算的未来和技术方向。 基础设施与软件架构 操作系统、数据库、编程语言、RISC-V…… 这些都是软件体系中最为基础和重要,也最为复杂的部分。在这些领域,其最前沿技术发展得如何?任何一个软件都需要合适的架构,怎样让架构更加理想,当前有哪些架构新花样,也是本论坛想要探讨的内容。 大前端新趋势 低代码、WebAssembly、小程序、跨端、PWA、Flutter、Dart、RN、Vue、Angular…… 这些技术越来越火,本论坛聚焦大前端前沿开源相关技术及实践经验,让技术更好地为业界服务。 GOTC 2023 报名通道现已开启,诚邀全球各技术领域开源爱好者共襄盛举! 参会报名,请访问: https://www.bagevent.com/event/8387611 进入官网了解更多信息,请访问: https://gotc.oschina.net/

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册