Redis开发实操之春运迁徙页面--凡澈
主要内容:一、开源Redis使用二、云Redis开通到设置三、春运迁徙页面开发 一、开源Redis使用1)开源Redis体验通过访问 https://try.redis.io/ 可以在线执⾏Redis命令,体验Redis。也可以在Redis官⽹每个命令⽂档⻚⾯https://redis.io/commands/set 在线执⾏Redis命令。演示部分:打开https://try.redis.io网站,可以看到最底下Terminal,执行“help” 查看有什么命令,再输入“set key value”、“get key”获取KEY、也可以执行list “lpush lish a b c d e ”lpush 5个元素,通过“lpop list”拿出元素。也可以在Redis官⽹每个命令⽂档⻚⾯ https://redis.io/commands/set。 在Redis官方文档中,每一个命令的页面,除了它的参数返回值含义之外,还有Examples部分,也可以在此执行Redis命令。比如“get mykey”,可以得到“hello”,输入“get mykey world”将“mykey”进行更改,再次获取。也是一种体验Redis的方式。2)从源码编译启动Redis从源码编译启动Redis,有两种方式:·第一种是:直接从GitHub网站上拉下源码直接编译。Redis GitHub : https://github.com/redis/redis,下载源码并进行编译。Linux&MacOS平台均可用这种方法:$ git clone https://github.com/redis/redis.git$ make -j$ ./src/redis-server$ ./src/redis-cli // 在另⼀个终端连接。·第二种是:下载已经编译好的二进制文件。windows平台可以下载相应的二进制文件进行启动。演示部分:用“git clone”命令将Redis克隆到本地,克隆完成后,到Redis目录下执行“make -j”命令,即可开始启动编译。编译完成之后,可以看到“src”目录下会出现“redis-server”以及“redis-cli”的二进制文件,直接启动“redis-server”,发现日志如下图所示:显示Redis启动在“6379”是默认port,此时已经准备好开始接收连接了,此时直接启动客户端程序,默认连接也是连接到“6379”端口,执行“ping”命令,发现Redis可以正常服务,写入数据进行测试(输入set key value),同样可以设置key (输入get key),也可以获取key (输入lpush list a b c d e ),从尾部拿出刚才的一个元素 (输入lpop list),也可以持续的去拿出其他的元素(即续输入多个lpop list)。3)使⽤客户端程序连接Redis当写程序时需要选择客户端程序,Redis客户端程序生态非常的繁荣,有各种各样的语言,可参考:https://redis.io/clients。常⻅的如:• Java: Jedis, Lettuce, Redisson;• C/C++: hiredis, redis-plus-plus;• Python: redis-py;• Go: Redigo;接下来以Jedis为例进行演示:• 第一步:引入Jedis Pom依赖;<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId>• 第二步:初始化并调⽤API;Jedis jedis = new Jedis("127.0.0.1", 6379);System.out.println("ping redis: " + jedis.ping());jedis.set("key", "value");System.out.println(jedis.get("key"));上面4行代码分别有如下含义:第一行new Jedis默认连接了本地的6379端口;第二行:ping redis,检查是否可以联通;第三行set了一个key;第四行获取了key。• 第三步:阿⾥云官⽅JedisPool连接池优化,因为Jedis基于连接池管理连接,连接池的设置对性能影响非常重要。阿里云官方网站上,列出了推荐的JedisPool连接池优化方案,https://help.aliyun.com/document_detail/98726.html。 演示部分:首先pom程序中需要引入Jedis依赖,接下来有一个实例连接Redis,并且进行插入数据,因为刚才已经启动了Jedis,只需要运行程序即可,可以发现Redis返回了pong,并且返回了value。除过 Java程序之外,大家也可以选择其他的客户端进行相应的连接。4)开源Redis参数设置上述Redis启动,没有通过指定任何参数的方式,都是用默认参数,其实有Redis.conf里面包含很多种参数。(/src/redis-server redis.conf // 通过指定参数的⽅式启动。) 下面重点介绍如下几个:1. bind {default: bind 127.0.0.1}:这个参数会控制,是否允许远程主机来连接本地的服务。如果Redis是作为服务提供给业务方使用,业务运行机器和Redis可能不在同一个机器,因此可以通过此选项来控制,是否允许Redis进行远程连接,如果将此选项注释掉,那么即表示允许远程客户端连接我们的Redis。2. appendonly {default no everysec}Redis有两种持久化方式RDB与AOF,RDB会将数据保存在磁盘上;AOF会将操作保存在磁盘上,即每次操作时往磁盘上写入命令,可以控制多少时间往磁盘上写一次(刷一次盘)。appendonly选项可以控制是否打开AOF,如果设置为yes,代表打开AOF。 AOF的刷新策略也有很多种,比如是每秒刷新还是始终刷新,通常我们会选择每秒刷新的方式,即appendfsync的参数设置为everysec。除此之外,还有protected-mode {default: yes};save {default 3600 1 300 100 60 10000}等等。如果选择云Redis,这些参数我们会为大家设置好。 二、云Redis开通及设置云Redis开通及设置包括以下几个部分:1)购买实例;2)设置⽩名单;3)连接实例;4)账号管理;5)监控与⽇志。1)购买实例首先打开阿里云的网站,到redis的产品下,点击立即购买,关于redis的选型以及购买页面的详细参数,因为演示需要Tair GIS,因此这里需要购买一个企业版的实例,选择性能增强型的标准版,2g的格式。如下图所示,支付完成之后,到控制台,可以看到实例是在创建中的状态,创建完成之后,再进行接下来的演示。实例创建完成运行,如果要连接一个云redis实例,从本地连接,需要开通公网访问的地址,为实例设置一个密码,密码设置成功之后,就可以在本地来连接实例。我们通过redis客户端来指定地址,以及指定它的端口为6379,指定实例可以连接,用密码进行连接,返回没有设置白名单,发生错误,因为IP是不合法的。2)设置白名单下图所示,设置白名单,默认的白名单是127.0.0.1及它不允许除本机之外其余的地址访问,修改将新的IP添加到白名单中。3)连接实例添加完成之后再次回到链接,再次进行链接,发现实例已经可以正常连接,执行命令来进行测试,实例可以正常执行命令。性能监控,阿里云redis提供非常丰富的性能监控的指标,可以看到 CPU利用率,内存使用的情况,内存的利用率,以及Qps和连接数等详细信息,除此之外,也可以为实例设置报警,当实例出现业务出现高峰的时候,如果阿里云redis性能不足,可以通过报警及时通知到业务方。阿里云redis也支持设置 redis的多种参数,可以随意调控自己想要设置的参数。4)账号管理在账号管理中,阿里云redis可以添加和创建多个账号以及子账号,以APP来测试一个创建一个只读或者有读写权限的账号。如下图所示,账号可用之后,用APP1进行连接,首先连接成功redis,接着用APP1用户:密码,是一个可读可写的,因此可以获取刚才的key,也可以将其删掉,返回成功。5)监控与日志备份恢复和数据恢复功能,备份恢复可以让数据在合适的时间进行备份,也可以将数据按照任意时间点进行恢复,在CloudDBA,可以看到整个数据库的实时性,包括实例的命中率,CPU的利用率等实时性能。三、春运迁徙页面开发(一)页面数据结构原理上图为一个页面实例,其中信息采用的结构原理如下:1. 用户信息存储采用Hash结构。2. 地理位置信息判断采用Tair性能增强型结构TairGis,因为Redis原生的GEO不具有点与面关系判断的功能,无法实现此功能。主要用到的API为GIS.CONTAINS,用户判断用户的坐标与在哪个省中; GIS.INTERSECTS,判断用户是否经过热门春运地域。3. 本地简报(新闻通知)功能采用Redis原生结构Stream,给用户推送实时消息。主要用到的API有两个:一是XADD用来添加消息,二是 XREVRANGE用来遍历返回消息。4. 迁⼊迁出排名采用Redis原生结构Sorted Set,因为其本身按照score排序,因此极大的简化了开发逻辑,可以直接按照顺序返回。主要用到的API有两个:一是ZADD用来添加省份及对应的热力值,二是ZREVRANGE用来按照倒序返回信息。声明:此页面不会实际获取用户地理位置信息,页面数据为测试数据,只做演示使用。(二)功能演示与代码详解config:负责初始化redisTemplatecontroller:项目的http请求路由model:项目中定义的classrepo:封装具体Redis的操作 (二)TairGis - 轨迹漫游查询l 通过TairGis,我们可以实现以下功能:1)典型的判断“线”和“面”的关系漫游查询:根据一段行程轨迹判断路过 哪些地方(如省、市、县等)2)场景:判断一个人是否经过疫区,电子围栏,红绿码。下面为大家进行代码演示。可以看到,config是初始化了一个RedisTemp,在这里要注意设置它Servializer序列化类的方法。Controller包括热门迁出区域的管理,消息和位置的Controller,还有热力值的排名。接下来启动这个项目,首先将实例地址填到配置application.properties中,填入实例的密码后就可以启动整个Spring工程。启动之后,由于是一个新的实例,因此并没有测试数据,需要插入一些测试数据。这里有一个InsertDataController,当PUT请求过来后,它就会往里插入一些数据,其中包括User的信息,Position经纬度的坐标,经过路径的线段,还会插入省份地区,例如北京、河南、安徽和浙江等经纬度所组成的区域,还有消息的情况(如新闻),也会插入省的排名值等。如上图所示,我们插入数据。完成之后,可以连接到Redis上查看,这时候用keys遍历,可以看到插入四个key:USER、NEWS、CHINA、RANK。输入type USER,发现它是一个Hash数据结构,hgetall USER拿到它的信息,包含用户ID、名字与迁徙位置。接下来我们回到前端。可以看到,刚才插入的数据已经被获取。这块可以详细给大家解释一下,它所在的位置是如何被获取到的。在用户的信息中可以看到它的Position坐标为(120.032698 30.285296),通过坐标反查系统查询这个坐标在中国的位置,查询结果为浙江杭州,表示用户坐标是在浙江杭州。我们的数据库信息中有一个Key是China,它的Type是TairGis,可以gis.getall.CHINA来看一下 China。可以看到CHINA包含的坐标非常多和大,其中包含浙江的坐标,它的坐标是一个多边形,而杭州的点包含在多边形浙江中,因此我们把它的省份就判断成了浙江,这是TairGis的点和面之间关系判断的功能。目前页面显示用户没有经热门春运区域,我们可以查看它经过了哪些区域。我们拿到用户的经过坐标线段,用一个坐标画图工具在线画图,可以看到,他春运的路线是从北京出发,途径安徽再到浙江。如果我们将浙江添加为热门区域,此时再刷新页面,热门区域判断已经由“否”变为“是”。因此,只要我们设定好热门区域,只要用户春运路线与标记区域有交集,则系统会自动判断用户经过热门春运区域。在这里,除了用于春运场景,在日常场景中也能通过这种方法判断用户轨迹是否经过疫区,从而生成红色或者绿色健康码。除此之外,还可以用于无人机禁飞区域判断等需要地理区域判断的场景。第三个功能点为新闻通知,它是用Redis的Stream的结构生成,这里可以进行测试,我们添加一个新的消息“This is a test message 4”。存入新消息之后刷新页面,可以看到该消息已经出现在新闻通知的第一条消息上。迁入迁出地的热力值排名采用Redis原生结构Sorted Set完成。当我们插入一条数据之后它会自动排名,整个页面的热力值数据来源于百度迁徙。声明:以上操作不会实际获取用户地理位置信息,页面数据为测试数据,只做演示使用。
【云周刊】第216期:阿里云助力数字政务,苏浙黔沪领跑全国
欢迎订阅云周刊
本期头条
阿里云助力数字政务,苏浙黔沪领跑全国
近日,《省级政府和重点城市网上政务服务能力调查评估报告(2019)》发布。结果显示, 6个省级政府的网上政务服务能力指数为“非常高”,其中江苏、浙江、贵州、上海四个省级政府都和阿里达成合作,阿里云以强大的数字政务能力支持数字中国持续发展。点击查看
阿里云亮相2019云原生产业大会,积极共建云原生生态阿里巴巴、支付宝员工都在用的知识管理工具,究竟有何特别?在阿里,我如何做好一个项目的启动?走近科学,探究阿里闲鱼团队通过数据提升Flutter体验的真相Gartner:阿里云亚太市场份额第一,超过亚马逊和微软总和中国联通与阿里云达成合作,推动5G+新媒体产业发展4月末阿里云ACE同城会活动信息一览
技术干货
一份还热乎的蚂蚁金服面经(已拿Offer)!附答案!!
本文来自我的知识星球的球友投稿,他在最近的校招中拿到了蚂蚁金服的实习生Offer,整体思路和面试题目由作者——泽林提供,部分答案由Hollis整理自知识星球《Hollis和他的朋友们》中「直面Java」板块。点击查看
在阿里,我如何做好一个项目的启动?【最全PPT下载+直播回顾】阿里云栖开发者沙龙PHP技术专场【直播回顾】阿里技术专家天樵:基于JVM的脚本语言开发、运用实践阿里云栖开发者沙龙PHP技术专场-聊聊服务稳定性保障这些事【资料下载】开发者如何全面提升职场竞争力系列课程第二讲——开发者如何申请技术专利【资料下载】K8s监控神器——TSDB for Prometheus的入门与实践
期刊订阅
阿里小程序云周刊 #阿里小程序云周刊第2期:将你的小程序案例分享出来吧Redis&MongoDB 社区双周刊 #Redis&MongoDB 社区双周刊第1期:Redis多线程性能优化 阿里云新品发布·周刊 #【阿里云新品发布·周刊】第7期:阿里云 Redis 5.0 重磅上线,全新Stream数据类型带给你不一样的缓存体验! #阿里云数据库2-3月刊:阿里云峰会云数据库四大发布
精彩直播
阿里云新品发布会第56期:区块链服务BaaS发布会
阿里小程序云生态及实践分享 - 阿里云,支付宝,淘宝,高德,钉钉 专家齐聚,畅聊阿里小程序生态!中国最大 Java 用户组:GreenTea JUG Java Meetup 杭州站与Ruby创始人松本行弘、阿里高级技术专家朴灵面对面支付宝小程序模板消息接入教程
聚能聊
阿里开发者招聘节 | 面试题01:如何实现一个高效的单向链表逆序输出?
面试,如同玩一场饥饿游戏:既要对环境了然于胸,又要对自身心知肚明。发现一个好工作不容易,但成功应聘又会面临一系列的挑战。点击查看
【有奖征集】将你的小程序案例分享出来吧!互联网大数据时代的实时计算需求,你打算用什么方式来应对?千万QPS的缓存!Redis 5.0最新的Stream数据结构,你还在等什么?
读书推荐
人生苦短,初学者应该如何更快的学好Python?
时光在不经意中流逝,转眼间我已经毕业十余载。一边是时间的年轮不会停止等待,一边是科技的发展已经不能单单用惊叹来记载。很幸运的是,计算机编程语言在科技发展浪潮中的地位不可代替。点击查看
专访李强:我为什么要让孩子学习编程?如何写出让同事膜拜的漂亮代码?入行AI,程序员为什么要学习NLP?
产品特惠
阿里巴巴小程序繁星计划
在2019阿里云峰会·北京站上,阿里巴巴旗下的阿里云、支付宝、淘宝、钉钉、高德等联合发布“阿里巴巴小程序繁星计划”:提供20亿元补贴,扶持200万+小程序开发者、100万+商家。凡入选“超星”的小程序,入驻支付宝、淘宝、钉钉、高德后还能得到流量重点支持。点击查看
阿里云区块链服务BaaS发布ECS 系统盘支持一键扩容啦,无需更换系统盘阿里巴巴、支付宝员工都在用的知识管理工具,究竟有何特别?阿里新一代分布式任务调度平台Schedulerx2.0破土而出
PostgreSQL技术周刊第8期:用PostgreSQL 做实时高效搜索引擎
PostgreSQL(简称PG)的开发者们:云栖社区已有5000位PG开发者,发布了3000+PG文章(文章列表),沉淀了700+的PG精品问答(问答列表)。
PostgreSQL技术周刊将会为大家介绍最新的PG技术与动态、预告活动、最热问答、直播教程等,欢迎大家订阅PostgreSQL技术周刊和关注PostgreSQL社区公众号。
活动预告
【直播预约】2018Postgres中国用户大会(大象汇)
“Postgres中国技术大会2018(大象汇,第8届)”将于2018年12月15、16日在浙江吉利控股集团有限公司总部(杭州市滨江区江陵路1760号)举行.大会由中国Postgres用户会(China Postgres User Group,简称:CPUG)主办,是一场汇聚各界PostgreSQL大拿、交流最新业界技术动态和真实应用案例的盛宴。PG大象汇的成功举办推动了PostgreSQL数据库在中国的发展,也拉近了中国与世界的距离。
活动详情、参与报名地址:https://yq.aliyun.com/articles/673933
最新动态
PostgreSQL 11 新特性解读:分区表支持创建主键、外键、索引
PostgreSQL 10 版本虽然支持创建范围分区表和列表分区表,但创建过程依然比较繁琐,需要手工定义子表索引、主键,详见 PostgreSQL10:重量级新特性-支持分区表,PostgreSQL 11 版本得到增强,在父表上创建索引、主键、外键后,子表上将自动创建,本文将演示这三种场景。
用PostgreSQL 做实时高效 搜索引擎 - 全文检索、模糊查询、正则查询、相似查询、ADHOC查询
通常来说,数据库并不具备很多的加速能力,但是PostgreSQL的功能非常强大,它可以非常完美的支持这类查询的加速。用户完全不需要将数据同步到搜索引擎,再来查询,而且搜索引擎也只能做到全文检索,并不你做到正则、相似、前后模糊这几个需求。使用PostgreSQL可以大幅度的简化用户的架构,开发成本,同时保证数据查询的绝对实时性。
德哥的博客专辑:PostgreSQL 估值、概率计算
简介:知识点:统计信息、采样接口、概率计算插件HLL\CMS_TOPN、滑窗分析、EXPLAIN 估值
推荐专家
专家:德哥
阿里云数据库专家,PostgreSQL中国社区校长
格言:公益是一辈子的事, I'm digoal, just do it.
最新技术分享:
PostgreSQL pg_stats used to estimate top N freps values and explain rows
PostgreSQL 模糊查询最佳实践 - (含单字、双字、多字模糊查询方法)
关注专家个人账号,掌握一手专家技术干货。
精彩问答
流复制HA主备切换,时间线分歧问题
阿里云的RDS for Postgresql 明年有计划支持 PG 11 吗?
各位大虾,pgsql10启动报错,这个近4G的共享内存是在哪设置的呀
postgresql表数据想实时同步到其他类型数据库(例如mysql、oracle等),有没有好的开源软件?
postgreSQL11中,如何判断点是否在指定区域那?
聚能聊
【赠送参会码】PostgreSQL 2018 中国技术大会精彩预告
线下活动直播回顾
【阿里云栖开发者沙龙】- 玩转数据库技术,PolarDB,HBase,PostgreSQL,MangoDB,Redis
ADAM+PPAS助力企业IT系统高效云化、HBase 介绍以及典型场景分析、阿里云自研数据库POLARDB技术剖析、阿里云Redis技术架构、MongoDB Best Practice等精彩技术分享,一起回顾吧。
德哥直播课程
PostgreSQL多场景阿里云沙箱实验(第5讲):PostgreSQL 估值、概率计算
PostgreSQL多场景阿里云沙箱实验(第4讲):PostgreSQL 实时多维分析
PostgreSQL多场景阿里云沙箱实验(第3讲):PostgreSQL 实时搜索实践
PostgreSQL多场景阿里云沙箱实验(第2讲):PG秒杀场景实践
PostgreSQL多场景阿里云沙箱实验(第1讲):如何快速构建海量逼真测试数据
更多交流沟通,请扫码加入钉钉PostgreSQL技术进阶群
浙江移动容器云基于 Dragonfly 的统一文件分发平台生产实践
浙江移动容器云基于 Dragonfly 的统一文件分发平台生产实践
2018 年 11 月, 源于阿里巴巴的云原生镜像分发系统—— Dragonfly 在 KubeCon 上海现场亮相,成为 CNCF 沙箱级别项目(Sandbox Level Project)。
Dragonfly 主要解决以 Kubernetes 为核心的分布式应用编排系统的镜像分发难题。2017 年开源即成为阿里巴巴最为核心的基础设施技术之一。开源一年以来,Dragonfly 已在诸多行业落地。
DCOS 是浙江移动容器云平台,目前在平台式运行的应用系统已有 185 套,包括手机营业厅、CRM 应用等核心系统。__本文将主要介绍浙江移动容器云(DCOS)平台以 Dragonfly 为改革“利器”,成功解决了运营商大规模集群场景下分发效率低、成功率低以及网络带宽控制难等问题;并反哺社区,在 Dragonfly 界面功能、生产高可用部署层面对 Dragonfly 进行了升级。__
DCOS 容器云在生产环境中
遇到的挑战
随着浙江移动容器云(DCOS)平台的持续完善,承载应用不断增加,在运行容器数量接近 10000 个。采用传统 C/S(Client-Server)结构的分发服务体系已经越来越无法适应大规模分布式应用在代码包发布、文件传输时的场景:
计算结点因网络异常等原因,导致代码包下载失败,对应用代码包的完整性和一致性构成影响。
在多用户高并发情况下,可能会出现 TB 级的文件传输,单点性能瓶颈增加了应用发布时长。
Dragonfly 简介
P2P(Peer-To-Peer)是一种点对点网络技术,通过各结点互联,将网络中的资源和服务分散在各个结点上。信息的传输和服务实现直接在结点之间进行,避免了传统 C/S 结构可能的单点瓶颈。
CNCF 开源文件分发服务解决方案 Dragonfly,是一种基于 P2P 与 CDN 技术,构建了适用于容器镜像和文件的分发系统,有效解决了企业大规模集群场景下文件和镜像分发效率、成功率低以及网络带宽控制的问题。
Dragonfly 的核心组件:
SuperNode:超级结点,以被动 CDN 方式从文件源下载文件并生产种子数据块,在 P2P 网络中,充当网络控制器,调度结点之间的分块数据传输;
dfget proxy:部署在计算结点的代理,负责 P2P 结点的数据块下载和结点间的数据共享。
Dragonfly 分发工作原理(以镜像分发为例):容器镜像不同于普通文件,由多层存储构成,下载也是分层下载,非单一文件。每层的镜像文件都会被分割为 block 数据块并作为种子。下载结束后,通过每层镜像唯一的 ID 和 sha256 算法,重新组合成完整的镜像。确保下载过程的一致性。
Dragonfly 镜像下载模式的过程如下图所示:
dfget-proxy 拦截客户端 docker 发起的镜像下载请求(docker pull)并转换为向 SuperNode 的dfget 下载请求;
SuperNode 从镜像源仓库下载镜像并将镜像分割成多个 block 种子数据块;
dfget 下载数据块并对外共享已下载的数据块,SuperNode 记录数据块下载情况,并指引后续下载请求在结点之间以 P2P 方式进行数据块下载;
Dokcer daemon 的镜像 pull 机制将最终将镜像文件组成完整的镜像。
根据 Dragonfly 的上述特性,浙江移动容器云平台结合生产实际决定引入 Dragonfly 技术对现行代码包发布模式进行改造,通过 P2P 网络分摊发布时产生的单一文件服务器传输带宽瓶颈,并利用 Docker 本身的镜像 pull 机制来保证整个发布过程镜像文件的一致性。
解决方案:统一分发平台
架构设计与实现
功能架构设计
在 Dragonfly 技术的基础上,结合浙江移动容器云生产实践,统一分发平台的总体设计目标如下:
利用 Dragonfly 技术和文件下载校验功能,解决目前生产发布过程中应用代码包发布不一致、发布时间过长的问题;
支持客户端界面化,屏蔽后台命令行细节,简化操作流程,效率更高;
支持 Mesos、K8s、Host、VM 等多种云环境下的分发,并实现集群的自主发现,支持用户通过统一分发平台对目标集群进行统一化管理;
增加用户权限控制和任务带宽限制,支持多租户多任务的分发;
优化 P2P Agent 部署方式,支持更快速的计算结点 P2P 组网。
基于上述目标,统一分发平台的总体架构设计如下:
P2P 网络层是支持不同异构集群接入(主机集群、K8s 集群、Mesos 集群)的由多个计算结点构成的分发网络;
分发服务层由功能模块和存储模块构成,是整个通用分发系统的核心架构。其中,用户接入鉴权模块提供系统登录审核功能;分发控制模块基于 Dragonfly,实现 P2P 方式的任务分发;流量控制模块提供租户对不同任务的带宽设置功能;配置信息数据库负责记录网络层目标集群、任务状态等基本信息;用户通过状态查询模块可实现对分发任务执行进度的透明掌控;
用户操作层由任意数量的界面化用户客户端构成。
技术架构实现
根据上述平台设计目标与总体架构分析,容器云团队在开源组件的基础上进行了平台功能的二次开发,具体包括:
开发界面化用户客户端 Client;
引入 Harbor 开源镜像仓库进行镜像存储,Minio 对象存储服务进行文件存储;
使用 MySQL、Redis 作为 CMDB,由 MySQL 负责管理集群状态、用户信息等,为面向集群的“一键式”任务创建提供支撑。通过 Redis 保存分发任务状态信息,提供高并发、低延迟的状态查询服务;
平台核心服务层(Docktrans)和 API 服务网关层(Edgetrans)都是是无状态、面向集群的、可动态横向扩展的核心组:
API 网关封装了系统内部架构,主要负责接收并转发 Client 发起的任务请求以及实现用户对各功能模块的接入鉴权,并对外可提供定制化的 API 调用服务;
核心服务层是平台各功能模块业务逻辑处理的引擎。在分发过程中,核心服务层将通过统一的远程调用向 P2P 代理结点同时发起下载请求,完成客户端——任务集群“一对多”的分发过程。
df-master 与 df-client 均为 Dragonfly 组件,df-master 即 Dragonfly 中的超级节点SuperNode,df-client 即 P2P 网络中的对等节点代理 dfget proxy。
技术特色
df-client 实现容器镜像化。通过轻量级的容器部署,加快了组网效率。新接入网络层的集群 host 结点可通过镜像下载、启动的方式,秒级完成 P2P Agent 结点启动;
核心接口层(Docktrans)屏蔽了dfget 底层命令行细节,提供了界面化的功能,简化了用户操作。通过统一远程调用方式下发至多个 P2P 任务结点,解决了用户需要逐台进行 dfget 等下载操作的问题,简化了“一对多”的任务发起模式。
核心功能模块|分发控制接口交互流程
如下图所示,统一分发平台的核心模块在进行任务分发时的工作流程具体如下:
用户通过 Client 建立镜像或文件分发任务;
分发模块首先通过平台 API 服务网关(Edgetrans)的鉴权功能判断用户是否具有分发功能的权限;
用户通过鉴权后,设置分发任务参数,提供集群ID,平台从 MySQL 数据库读取集群配置信息实现集群结点的自主发现。用户也可以指定多个结点 IP 作为自定义集群参数;
根据分发类型,核心服务层(Docktrans)分发功能模块将不同的前端分发请求转换为 dfget(文件)或者 Docker pull(镜像)命令,通过统一远程调用 Docker Service 服务将命令下发至多个结点 df-client 进行相应的处理;
在任务进行过程中,任务进度与任务事件日志分别写入 Redis 与 MySQL 数据库提供用户对任务状态的查询能力。
生产环境改造成果
截至目前,生产共运行 200 余个业务系统 1700 多个应用模块,已全部优化为镜像发布模式。发布耗时和发布成功率得到明显改善:
采用 P2P 镜像发布后,业务多应用一次上线的月均发布成功率稳定在 98%。
4 月后容器云平台开始用 P2P 镜像发布方式代替传统分发系统的代码包发布方式,多应用一次集中上线发布耗时相较与改造之前大幅降低,平均下降 67%。
同时,容器云平台选取了多个应用集群进行单应用的 P2P 镜像发布改造效果测试。可以看出,单个应用发布耗时相较于改造前大幅降低,平均下降 81.5%。
后续推广
统一文件分发平台已有效解决了浙江移动容器云应用在代码发布过程中的效率和一致性问题,成为平台的重要组成部分之一。同时,也支持更多大规模集群中进行高效文件分发的场景。可陆续推广至:集群批量安装介质分发以及集群批量配置文件更新。
社区共建|界面功能展示
直接引入 Dragonfly 后诞生的社区诉求
缺少图形化界面,用户使用成本高,操作效率低;
缺少用户权限管理和分发审计功能,无分发管控能力;
不支持用户“一对多”的集群操作模式。云环境下,用户通常需要向自己所管理的集群同时进行分发,但现有模式仅支持用户在单结点进行分发操作;
传统 Agent 应用软件包部署方式效率低,不利于大规模集群的快速伸缩扩展。作为系统软件,增加了对宿主系统的入侵性。
目前,客户端界面化开发工作基本完成,已进入生产测试和部署中。分发平台总体规划 4 大核心功能:任务管理,目标管理,权限管理和系统分析,现已开放前三项功能。
权限管理界面
权限管理,即用户管理,为不同用户提供个性化的权限管理功能,具体如下:
支持不同角色(超级管理员、任务集群管理员、任务管理员)用户创建、删除、修改;
支持不同权限集合的定制化组合(角色创建),用户权限赋权;
支持外部系统用户接入与权限授权(暂未开放)。
目标管理界面
目标管理,即用户进行任务分发的目标集群结点管理,为用户提供管理集群的 P2P 组网和集群结点状态信息健康功能,具体如下:
支持不同用户集群的创建和删除;
支持在用户所管理集群下,容器自动化 Agent 部署快速新增、删除 P2P 网络结点,并对结点状态进行监控;
支持不同类型,如 host(虚拟机、物理机)集群、K8s 集群、Mesos 集群的接入,同时,支持直接读取 K8s、Mesos 集群结点信息,批量接入 P2P 网络层。
任务管理
任务管理提供文件或镜像分发任务的创建、删除、停止、信息查看等功能,具体如下:
支持镜像预热模式(可设置计划分发任务,提前发布镜像或文件分发至各结点);
支持容器镜像等多格式文件的分发;
支持指定任务集群多结点“一键式”任务创建、执行、删除、终止和已执行任务的“一键复制”;
支持对发布文件版本的创建和删除管理;
支持对分发任务状态与任务日志的查看。
系统分析(计划开放)
预计后续将开放系统分析功能,为平台管理员、用户提供任务分发耗时、成功率等数据和任务执行效率统计图表,通过数据统计与预测,有效支撑平台向智能化方向演进。
社区共建|生产高可用部署
镜像库主备容灾部署,主备之间通过镜像同步保持数据一致性。
P2P 发布由 df-master 和 df-client 构成(蓝色部分),df-master 从镜像库拉取镜像形成 P2P 种子,每个机房配置两个 df-master 形成高可用;
P2P 分发只在本机房分发,避免跨机房流量;
每个机房配置两个 mirror(备用镜像库),当 P2P 分发方式异常无法工作时计算结点会自动到 mirror 上下载镜像, mirror 通过负载均衡实现高可用。
目前,我们计划把界面功能展示贡献给 CNCF Dragonfly 社区,进一步丰富 CNCF Dragonfly 社区周边生态。未来,我们希望更多人参与进来,一起为社区繁荣贡献力量。
本文作者:
陈远峥 浙江移动云计算架构师
王淼鑫 浙江移动云计算架构师
Dragonfly 社区分享
Dragonfly 社区贡献者太云在 Dragonfly Meetup 分享到:
“目前,Dragonfly 已经成为 CNCF Sandbox 项目,Star 数 2700+,有很多企业用户正在使用 Dragonfly 来解决他们在镜像或者文件分发方面遇到的各种问题。未来,我们将不断完善和改进 Dragonfly,为云原生应用提供更加丰富强大且简便的分发工具。期待与大家共同努力,让 Dragonfly 早日成为 CNCF 毕业项目。”
推荐阅读
深度解读阿里巴巴云原生镜像分发系统 Dragonfly
重磅!阿里巴巴云原生镜像分发系统 Dragonfly 加入 CNCF
项目地址
https://github.com/dragonflyoss/Dragonfly
Dragonfly Roadmap
ARMS为深绘智能系统保驾护航并带来极致用户体验
作者:寻如,阿里云解决方案架构师
深绘智能(Deepdraw Intelligence)是一家从事人工智能与审美设计领域交叉学科研究领域,以技术创新为发展驱动力的公司。其总部位于浙江省杭州市滨江区。深绘智能公司的主要产品有深绘详情美工机器人,这是一款服务于电商的人工智能系统,该系统提供详情页的排版、切割、导出、上货及数据云管理等一站式自动化服务。
新的需求
随着公司业务的快速发展,同时系统演化多年,内部系统调用错综复杂,程序内部的异常代码、程序接口层面、API层面耗时情况对分析、由于一些慢SQL导致系统调用耗时过长、微服务调用链路整体耗时过长等问题一直存在。怎样能够找快速、精准的找到这些问题的根因,从而进行系统方面的调优一直是困扰客户的一个问题。
其次,由于深绘智能自身业务系统与三方交互众多,当问题发生时,怎么能够快速定位问题原因是团队一直要攻克的难题。
最后,深绘智能一直非常关注用户体验,一些业务系统的响应时间较长,亟需一个端到端的解决方案,从而快速提升用户体验。
经过与深绘智能技术团队多次沟通了解到,客户需要的不仅仅是对后端服务的监控能力,而是一整套从前端到后端服务整体的监控解决方案,同时对监控方案的接入改造成本比较关心,最好能够做到零业务代码的侵入。另一方面由于和三方系统频繁交互,希望能够做到对数据库、NoSQL等组件的监控能力。
最终,阿里云应用实时监控服务ARMS完全契合深绘智能的需求:
以探针方式进行部署,无论是以早期ECS构建的服务还是K8S构建的服务,都可以做到业务代码零侵入,极大程度减少了监控改造成本。
对MYSQL、MongoDB、Redis等三方系统完善的监控能力,从而完成端到端的整体监控解决方案。
通过应用实时监控服务ARMS的接入,能够及时、准确的发现并定位问题,带来了极大用户体验的提升。
方案价值
ARMS监控解决方案不仅仅是几乎为零的代码改造接入成本、同时具备完善、全方位的端到端的监控能力,使得客户系统整体响应降低高达50%,极大的提升了系统响应速度,用户体验得到了质的提升。
几乎为零的改造接入成本,通过探针方式接入、部署,真正做到了业务代码的零侵入、零改造。
性能问题和BUG实现一目了然发现,通过ARMS监控的解决方案可以快速、准确定位问题。
全方位,端到端的监控能力,从应用层面、接口层面、主机层面、三方调用层面多维度监控。比如应用的整体健康度,响应时间、慢SQL分析、接口的调用次数、异常分析、JVM分析、内存快照分析、CPU/内存/IO分析等。
系统高可用性得到了极大的增强,通过借助ARMS有效定位问题的手段,使得系统RT整体响应降低高达50%,极大提升了系统的响应速度,并使得用户体验得到了质的提升。
推荐产品
应用实时监控服务 ARMS:云原生一体化可观测性平台,提供全栈式的性能监控和端到端的全链路追踪诊断能力。了解详情<<
扫码了解更多技术内容与客户案例:
sealer 成为 CNCF Sandbox 项目,旨在构建分布式应用交付新标准
作者:sealer 社区2022 年 4 月 26 日,云原生计算基金会(CNCF) TOC 例会投票,一致通过 sealer 开源项目成为 CNCF 官方沙箱项目。sealer 项目诞生于阿里云智能,旨在解决分布式软件的打包、分发与运行的标准化问题。项目发展初期,也就是去年 5 月,阿里云的工程师即坚定选择了开源之路。一年时间走来,sealer 在独立软件供应商(ISV)市场,得到了广大用户的青睐。也正是其创新的思路,以及短时间内的增长较快的用户基数,使 sealer 得以顺利申请并加入 CNCF 。5 月 16 日,这个新晋的 CNCF Sandbox 项目也将亮相 KubeCon EU 峰会,向全球云原生开发者分享 sealer 的技术架构、社区进展和 Roadmap 。sealer 项目地址:https://github.com/sealerio/sealer项目架构总体而言,Kubefile 是 sealer 的核心创新点。迄今为止, sealer 是行业中第一个抽象出“集群镜像”的概念, 通过 Kubefile(一个类似 Dockerfile 的描述文件)去构建整个集群的镜像,并使之可以在任意地方运行的项目。通过 Kubefile 构建出的集群镜像,可以将整个集群依赖的所有文件打包在一起,一条命令实现分钟级运行。如需要交付一个集群,里面包含高可用的 MySQL、redis 和 WordPress, 只需要定义一个文件 Kubefile,和 Dockerfile 很类似,用 sealer build 命令之后就可以把 Kubernetes 与以上所有组件的所有依赖全部打包到 CloudImage 中,再由 CMD 命令来指定集群启动之后需要执行的命令。对比 Docker 的 workflow,sealer 可以定义一个 Kubefile build 和一个 CloudImage 然后通过 Clusterfile 传入整个集群需要的参数如服务器 IP 地址列表或者组件配置,最后 sealer run 就可以完成整个集群的交付。功能优势Docker 镜像很好地解决了单应用的打包问题,但是没有解决分布式应用的镜像问题。helm 这类编排工具解决了编排问题,没有解决打包问题。目前集群没有打包标准,构建一个自定义的 Kubernetes 集群也比较复杂,整个集群+分布式应用部署也只是面向过程,交付问题爆炸却屡屡得不到干净利索的解决,集群整体交付一致性差。特别是在专有云交付领域,一个分布式软件往往有非常多的配置,以及很多应用镜像和依赖,甚至有些情况还需要在离线情况下进行交付,交付过程面临着非常大的挑战。集群镜像把整个集群看成一台服务器,把 Kubernetes 看成云操作系统,实现整个集群的镜像化打包和交付,为企业级软件提供一种“开箱即用”的应用封装技术。通过非常简单的方式把一个应用的所有依赖进行标准化打包,一键运行到客户的集群中去,并且可以兼容复杂的基础设施,只需保障集群镜像构建过程没问题运行就没问题。集群镜像市场中会提供非常多已经构建好的可复用镜像,软件的使用者可以像搭建积木一样灵活地组合这些镜像服务与自己的应用,如 SaaS 应用依赖的数据库,消息队列,甚至 Kubernetes 本身都可以直接在市场中找到。使用集群镜像技术最终能帮助企业一键拉起一个复杂的自定义集群,大幅提升交付效率,降低交付出错率,直接复用成熟稳定的组件也可使软件稳定性大大提升。交付人员不用再关心复杂的部署细节,解决了软件生产者和使用者之间的协作问题。简单,会 Docker 的人都很容易接受 sealer 构建整个集群镜像的方式,一条命令就能运行起复杂的集群高效,sealer 可在数分钟之内快速启动整个集群,且打开 nydus 特性可以把大镜像分发性能提升60%稳定,目前已经数十家企业使用 sealer,且有非常高的适配性,几乎兼容所有主流的 Linux 系统功能强大,支持配置管理、插件管理、多架构、GPU、containerd 等等特性使用场景Kubernetes 集群本身的安装与生命周期管理中间件,数据库与 SaaS 应用整体打包,一键运行离线交付,云上交付国产化,GPU 等支持一键运行各种高可用中间件与服务,如 MySQL/Kafka/Redis 集群等自由组装集群能力,可以通过 Kubefile 或者集群镜像组合生成符合用户需求的自定义镜像社区进展目前 sealer 共拥有 52 名贡献者,9 名 maintainer 分别来自阿里云,政采云,讯飞,博彦,浙江大学,realAI。目前有数十家客户在实践 sealer 。sealer 目前用户接口已趋于稳定,在过去的一年中进行了大量的优化,比如构建一个集群镜像从最初需要 25 分钟 降低到目前的 3 分钟,大镜像的运行时性能从 1 小时降低到十分钟以内,最小化集群仅需 3 分钟,对接公有云驱动从最初的 3 分钟降低到 29 秒。在用户体验层面,4 月份发布的 0.8 版本升级了 Clusterfile 至 2.0 版本,更加精简,易于扩展,并完全兼容所有 kubeadm 的配置,通过深度合并的方式支持集群镜像中任意配置的修改,插件上也更灵活丰富,支持全生命周期插件,自定义执行脚本能力,支持使用 Go 编程语言开发 out-of-tree 插件。out-of-tree 的插件机制提供了更加自由的定制 sealer 的能力。生态方面,sealer 支持 20 多款通用集群镜像如 Prometheus、MySQL、Redis、Kafka等,意味着用户可以使用 sealer run mysql:8.0 这样的命令一键启动一个高可用 mysql 集群。阿里云开源的 ACK 容器服务发行版 ACK Distro[1]和阿里云技术中台免费下载使用的 CNStack 社区版[2] 也是基于 sealer 技术实现了整个容器平台的打包,分发和交付能力。同时,允许社区开发人员在这些项目的基础上通过 sealer 的 Kubefile 扩展,增加开源或者自有组件,创建更复杂的软件栈,支持更多的应用场景。Roadmapsealer 在现有每个功能上持续优化,并打造精品集群镜像,让各种生产可用的集群镜像信手拈来支持更多的运行时,如 k3s k0s进一步提升性能,让整个使用体验更快速高效,甚至实现整个集群“秒极”启动的能力进一步加强社区治理,细化 maintainer 增加与退出规则,让整个社区朝着更开放的方向发展sealer 的核心理念是像 Docker 一样构建整个集群以及分布式应用,在整个集群纬度保障一致性,实现整个集群里所有分布式软件的 Build、 Share、 Run!更多推荐[1] ACK Distro:https://www.aliyun.com/product/aliware/ackdistro[2] CNStack 社区版:https://github.com/alibaba/CNStackCommunityEdition欢迎钉钉扫描下方二维码或搜索群号 34619594 加入 CNCF sealer 社区交流钉群!戳此处,立即了解 sealer 项目!
社区首款 OAM 可视化平台发布!关注点分离、用户友好、上手难度低
作者 | 徐运元,杭州谐云科技合伙人及资深架构师,云计算行业和 Kubernetes 生态资深从业者
导读:什么是 OAM?2019 年 10 月 17 日,阿里巴巴合伙人、阿里云智能基础产品事业部总经理蒋江伟(花名:小邪)在 QCon 上海 2019 重磅宣布,阿里云与微软联合推出开放应用模型 Open Application Model (OAM)开源项目。
OAM 的核心关注点
关注点分离:开发者关注应用本身,运维人员关注模块化运维能力,让应用管理变得更轻松、应用交付变得更可控;
平台无关与高可扩展:应用定义与平台层实现解耦,应用描述支持任意扩展和跨环境实现;
模块化应用运维特征:可以自由组合和支持模块化实现的运维特征描述。
OAM 的核心模块
1. 应用组件(Components)
在 OAM 中,“应用”是由多个概念共同组合而成。第一个概念是:应用组件(Components),它是整个应用的重要组成部分。应用组件既可以包括应用运行所依赖的服务:比如 MySQL 数据库,也包括应用服务本身:比如拥有多个副本的 PHP 服务器。开发者可以把他们写的代码“打包”成一个应用组件,然后编写配置文件来描述该组件与其他服务之间的关系。
应用组件的概念让平台架构师等能够将应用分解成一个个可被复用的模块,这种模块化封装应用组成部分的思想,代表了一种构建安全、高可扩展性应用的最佳实践:通过一个完全分布式的架构模型,实现了应用组件描述和实现的解耦。
2. 应用部署配置文件(Application Configuration)
为了将这些应用组件描述变成一个真正运行起来的应用,应用运维人员会通过一个专门的、包含了所有应用组件信息的部署配置文件来实例化这个待运行的应用。这个配置文件本身也是 OAM 规范中的一个声明式 API,用来让应用运维人员能够根据开发者或者平台提交的应用描述,实例化出对应的、真正运行起来的应用。
3. 应用运维特征(Traits)
最后一个概念是一组应用运维特征(Traits),它们描述了应用在具体部署环境中的运维特征,比如应用的水平扩展的策略和 Ingress 规则,这些特征对于应用的运维来说非常重要,但它们在不同的部署环境里却往往有着截然不同的实现方式。 举一个简单的例子,同样是 Ingress,它在公有云上和本地数据中心的实现可能完全不同:前者一般是 SLB 这样的云服务,而后者则可能是一个专门的硬件。这也就意味着针对这两个环境的 Ingress 运维工作,将会有天壤之别。 但与此同时,无论是在哪个环境里,这个 Ingress 规则对于应用开发人员来说,可能是完全相同的。
应用特征的设计,让这种关注点分离成为可能:只要这两个环境在 OAM 模型下提供了对 Ingress 这个应用运维特征的实现,那么应用就可以使用统一的 Ingress 规则描述,无差别地在这两个地方运行起来。与此同时,这两个环境的基础设施供应商可以继续通过配置这些应用特征的实现,来满足它们各自的运维要求(例如:不同环境里 Ingress 实现在满足合规性和安全性上的差异)。
一个基于 OAM 的可视化实现介绍
目前该平台主要基于 OAM 的 V1 alpha1 版本实现,并且对于 OAM 的核心理念进行的抽象和封装,以更符合用户的使用习惯。在本文介绍的可视化部分背后,是完整的 OAM 格式的 yaml 文件。可视化 OAM 平台主要包含两大核心功能:
1. 运维特征模型
运维特征模型主要是针对 OAM 的 Traits 的具体实例化,让用户可以把复杂的一些运维特性可以直接以插拔的形式直接让应用发布者去使用。目前平台已经封装了包含服务发布、日志搜集、自动伸缩、存储挂载等 8 个运维特征的封装。
图 1 运维特征模型仓库
2. OAM 应用编排
OAM 应用编排功能将 OAM 的应用发布全流程进行了可视化的实现,将应用组件添加、配置文件修改以及运维特征添加等 OAM 的核心功能进行了抽象和封装。OAM 应用编排目前包含以下核心功能:
组件编排: 可视化添加平台的组件并且进行组件的参数设置;
运行特征编排:在添加的平台组件基础上进行运维特征的添加和编排(也为后续开发、运维关注点分离做准备);
OAM 版本管理:平台会保存所有的 OAM 发布版本,并且提供升级和回滚功能。
图 2 OAM 应用编排主界面
接下来,我们会以一个典型应用(nginx+tomcat+redis)的部署来全面解析,如何在平台上进行 OAM 的可视化发布。
前置条件
运维特征(Traints)应用模型已安装,在界面上,可以快速查看有哪些运维特征应用模型,以及它们的运行状态。当前只支持系统定义的运维特征,后续会开发自定义的运维特征的生命周期管理。让用户可以编写自己的运维特征并且安装到平台进行使用。
OAM 应用创建流程
OAM 应用基本发布流程:应用创建->新增组件->应用编排->保存版本->发布应用。
创建应用: 点击应用->OAM 应用菜单, 点击【创建应用】按钮,输入必填项;
添加组件: 点击【新增组件】按钮,设置工作负载类型,容器配置等;
选择想要创建的工作负载类型,目前已经将 Server、Singleton Server、Task、Singleton Task、Worker 以及 Singleton Worker 等六种核心的工作负载进行了封装,用户只需要在下拉框中勾选自己想要创建的负载类型即可。
在选择完负载类型之后,用户可以以可视化的形式去选择想要发布的镜像以及容器的基本配置参数。同时,目前也支持基于多个容器的编排发布。
根据我们的需求,我们依次添加 tomcat、redis、mysql 三个组件,在界面上就可以看到组件的状态,同时点击“详情”可以看到对应的 Kubernetes 资源信息;
查看组件的详细信息。
应用编排:在创建完需要部署的组件之后,我们的 OAM 应用已经具备了开发的属性。
之后我们需要根据需求给每一个组件添加运维特征:点击进入应用编排界面,你可以看到刚才添加的组件已经展示在画布之上;在画布上点击单个组件,可以看到目前适合该组件的运维特征,勾选你所需要的运维特征即可快速添加;在添加完运维特征之后,会在右边栏弹出运维特征的配置参数,配置保存之后这些运维特征即可生效;
在添加完所有组件的运维特征之后,我们就可以看到一个完整的编排完的 OAM 应用了。在 OAM 的 V2 版本,我们同时会再增加应用的依赖关系,用户可以通过拖拽和连线来实现应用之间的依赖编排;
保存版本:最后,我们可以点击【保存当前内容为版本】按钮,输入版本号,点击【确定】;
发布应用:点击【发布】按钮,发布应用
发布应用后,组件状态显示‘已实例化’。应用实例状态显示“健康”。
点击事件 tab 页,显示事件。
用户可以快速查看已经创建的 ingress,并且进行访问。
用户可以通过修改 traints 信息,快速对当前的应用进行修改和升级。
点击进入应用编排界面,并且编辑 tomcat 实例数为 4。
将编辑后的版本,保存为当前版本则会直接讲修改的配置更新到当前实例。如果选择保存为新版本,则会将当前配置修改保存为模板,等待发布。我们将此修改保存为新版本。
点击更新为此版本,进行刚才修改的配置发布。发布完成之后,我们可以看到有两个版本的 OAM 应用模板。
查看详情,确认 tomcat 实例数已经变更为 4,但是由于我们同时设置了自动扩缩容的实例为 3,因此在扩容之后又迅速变回实例 3。
至此,一个完整的部署和更新 OAM 应用的可视化流程就演示完了。
总结
如今 OAM Spec 已经迭代到了 v1alpha2 版本,新版本在坚持 OAM Spec 平台无关的基础上,整体变得更 Kubernetes 友好化,很大程度上平衡了标准与可扩展性,更好的支持已有的 CRD。也就是说,如果你已经编写了现成的 CRD Operator,可以平滑的接入到 OAM 体系中,并且享受到 OAM 模型的红利。
更详细的新版本介绍可以阅读《OAM v1alpha2 新版发布:平衡标准与可扩展性,灵活接入 CRD operator》。
该可视化平台也已经在全面升级到 v1alpha2 的过程中,新版的支持可以更好的允许用户编写插件扩充平台的功能。
该平台来自于阿里云战略合作伙伴杭州谐云科技,该平台基于 OAM 实现的开源版本也已经在路上,大家敬请期待。
OAM 平台试用网址:http://139.196.197.117:30088/ 用户名/密码: admin/Ab123456
Demo 中所有的 yaml 文件请访问 github 地址查看: https://github.com/harmonycloud/oam-simple-demo
目前,OAM 规范和模型实际已解决许多现有问题,但它的路程才刚刚开始。OAM 是一个中立的开源项目,我们欢迎更多的人参与其中,共同定义云原生应用交付的未来。
杭州谐云科技有限公司成立于 2016 年 7 月,公司核心团队来自于浙江大学 SEL 实验室,谐云团队在云计算及相关领域具备深厚的技术积淀,在全球顶级开源社区 Docker、Kubernetes、Cloud Foundry 等项目贡献累计超过 200 万行代码,排名全球第四,国内第一。团队曾著书中国第一本深度解析容器云的专业书籍《Docker 容器与容器云》,是国内为数不多掌握底层核心技术的容器云提供商。建设了目前中国最大的容器集群落地案例,支撑着国内最大的互联网电视云。
课程推荐
为了更多开发者能够享受到 Serverless 带来的红利,这一次,我们集结了 10+ 位阿里巴巴 Serverless 领域技术专家,打造出最适合开发者入门的 Serverless 公开课,让你即学即用,轻松拥抱云计算的新范式——Serverless。
点击即可免费观看课程:https://developer.aliyun.com/learning/roadmap/serverless
“阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的公众号。”
铁庵:NoSQL、RDS和大数据异构融合实战,详解PostgreSQL FDW功能原理
6月23日云栖社区《NoSQL、RDS和大数据异构融合实战》的直播顺利结束,来自阿里云的ApsaraDB数据库产品专家萧少聪(铁庵)与大家分享了通过PostgreSQL实现NoSQL、RDS和大数据异构融合实战。直播中,他重点介绍FDW原理,并结合金融报文处理、物联网数据整合、企业并购重组场景下的具体案例,详细讲解了PostgreSQL是如何通过FDW外部数据通道功能实现NoSQL、大数据异构融合以及开发效率的提升的。本次活动整理文章、视频、幻灯片整理如下。
直播视频:
(点击图片查看视频)
幻灯片下载地址:https://oss-cn-hangzhou.aliyuncs.com/yqfiles/e95acb3cc257c377ad8df5e944760638.pdf
Why PostgreSQL ?
图一 PostgreSQL的发展历程
PostgreSQL的前身为ingres Database,从1973年伯克利分校的Ingres项目至今,PostgreSQL现已经过了几十年的发展。相比较于广泛使用MySQL开源数据库,我们之所以对PostgreSQL数据库情有独钟,是因为其独特的魅力所在:
开放性更强:PostgreSQL基于BSD/MIT协议,对所有人免费,可以任意处置,包括使用、复制、修改、合并、发表、分发、再授权或者销售。唯一的限制是,软件中必须包含上述版权和许可提示;相比于其它如 GPL / Apache 开源协议更开放、更适合于长远的企业战略发展;
稳定性:PostgreSQL至今已有超过40年历史,专注于OLTP事务处理;其多程衍生产品已经用于用于传统金融、通讯、能源企业认可,如:平安集团、MasterCard、浙江移动、日本NTT、韩国KT、国家电网;
企业功能:在PostgreSQL 9.0中增加了大量的企业功能:
数据流式复制(9.6支持多节点全同步);
基于ACID的JSON及KV数据类型;
PostGIS地理信息模型;
FDW对接第三方数据源,或实现Sharding;
可扩展支持R语言、网络、生物、化学等函数;
唯一明确说明对SQL 2011的兼容程度>90%;
目前,PostgreSQL正面临着巨大的机遇:首先国内PostgreSQL使用量仅是国外的三十分之一,潜力巨大;从2011年开始,PostgreSQL在国内的查询指数呈现逐年倍增;同时众多国内外商业数据库都是基于PostgreSQL,生态丰富,使其大有成为数据库界Linux之势。
Why FDW ?
FDW全称Foreign-Data Wrapper,简单来说就是PostgreSQL中的外部表功能。得益于PostgreSQL源代码的开放性,当前已经支持包括:MongoDB、Redis、MySQL、SQL Server、Oracle、Hadoop、Hive、Elastic Search等近30种不同的外部数据源(可点击此处查看所支持的全部数据源)。也就是说可以将这些数据库当做是PostgreSQL内的表格直接进行如insert、delete等操作处理。
首先来看一下传统企业现有的数据操作模型。
图二 传统企业的数据操作模型
从上图可以看出,传统企业的数据操作模型中的数据库主要使用Oracle、MSSQL或者MySQL等关系型数据库;前端包括业务系统、OA系统、财务系统等大大小小不同的系统,各系统与之对应的数据库也不尽相同。
当传统企业面向互联网/物联网进行转型时,必须要构建新的系统与数据库。对于大部分企业而言,通常会选择MongoDB作为其数据库,这是因为互联网应用中大量的数据是以JSON这类非结构化模式存储。但MongoDB实际上不是一个关系型数据库,因此不具有表格(Table)之类的概念。当企业开发的新应用需要与传统的应用进行通信时,目前采用的方法是:在原有的业务、OA等系统的原有程序上加入新代码,而且新代码操作并非传统的SQL语句,而是使用MongoDB专用的语法进行操作,这使得整体的开发变得更为复杂。
图三 传统企业整个大数据处理模型
对于传统企业整合大数据处理而言,需要将数据放入到Hadoop/Spark/HBase中进行整体分析。在这个过程中,需要将MongoDB以及传统的Oracle/MSSQL/MySQL中的数据通过定期ETL清洗等方式定期传回到大数据分析平台中,并且利用Hadoop编写MapReduce一系列的组件将Hadoop中的分析结果转存系统的数据库中,以供业务系统使用。
因此,在传统企业向互联网/物联网转型的过程中,会创造大量的软件,而这些软件可能是由不同的代码语言编写而成;同时还需要在旧的系统中扩展新的代码。总结来看,传统的企业(ISV)面临的问题可以概括成下面三点:
时间:不抓紧时间转型将可能错失良机;
复杂:新架构跨界操作多管理难;
团队:新知识积累不足,抗风险能力低。
如何去解决这些问题呢?我们采用的方式是:PostgreSQL FDW 。
图四 PostgreSQL FDW
从上图可以看出,通过FDW之后,可以将MongoDB/Redis等NoSQL数据库、MySQL/SQL server等RDS关系型数据库或者Hadoop等大数据处理平台,甚至是一些OSS/Excel等文件当成一系列的外部表进行操作。下面将借助具体案例进行分析。
FDW: SQL Everything加速传统行业转型
传统企业都需要向互联网、物联网或者移动端进行转型,在转型的过程中一定会遇到包括JS、JSON在内的移动端的数据类型。一个项目通常会相当复杂,在现有的基础上以最少量的改动实现代码的快速迭代,完成新的功能是非常重要的。目前,可借助PostgreSQL协助实现“敏捷项目”转型,通过使用FDW打破NoSQL和BigData的障碍,快速成型,充分发挥现有团队的SQL价值。通过SQL开发方式快速进入新领域,再进行代码向非关系型处理(JSON)或大数据处理的深度优化抽离开始,实例数据库架构的“敏捷”转型。
目前PostgreSQL 通过支持JSON数据类型,在传统行业转型的过程中,可以将传统用户数据场景轻松转换成移动互联网数据场景。通过全SQL在PostgreSQL中进行JSON数据操作,并可以对JSON中的某个属性进行索引以提高查询性能。实现NoSQL + SQL的有机整合,实现一类NewSQL的处理模型,同时在PostgreSQL中的JSON处理完全遵循ACID的数据库原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)要求。直接符合传统企业对于业务数据的可靠性、稳定性等需求,避免让用户为适应NoSQL数据库的CAP“最终一致”原理而不得不马上调整现有业务模型的窘境。
图五 SQL与JSON结合
由此上图可见通过PostgreSQL我们可以在一个SQL中操作原始的关系型数据,同时又可以进行JSON数据的整合处理。这为我们系统的“转型”开发争取到大量时间。但尽管部分的数据和JSON类型可以用PostgreSQL进行处理实现,解决了关系型数据库跟物联网对接的问题。当业务扩展到一定规模后,MongoDB数据库的需求依然会逐步展现,一是当JSON数据不要求ACID时MongoDB处理性能更高,二是当前体系下MongoDB扩展性事好;同时还可能需要用到Hadoop进行大数据分析,这又形成了非常复杂的架构和较大的任务量。针对这种情况,可以通过引入FDW模型加以解决。
图六 FDW实现“敏捷项目”成型
在FDW模型中,传统的系统业务依旧直接对应于Oracle/MSSQL/MySQL传统的关系型数据库;通过引入PostgreSQL作为中介库,也就是中间的处理节点,以便提供FDW和SQL的操作;新的互联网应用连接到MongoDB数据库中;通过在PostgreSQL中建立FDW与MongoDB的通道,将MongoDB中的数据当成PostgreSQL的数据表;在旧的业务系统中,仅需简单的SQL扩展就可以访问到MongoDB的数据;此外,PostgreSQL同样可以通过FDW与传统的数据库打通;最后,大数据处理平台以及OSS等文件也可以通过FDW与原来的业务系统进行连接。
FDW:金融报文处理
接下来看一下,在金融行业诸如报文处理等操作时FDW的是如何发挥作用的。
图七 FDW在金融报文处理中的应用
金融的报文有很多种处理方式,其中一种方式是将单个格式化文件上传到某个文件目录下;在数据库中,通过存储过程定期任务读取文件列表,在文件列表内直接将数据读出、汇总,经过计算之后重新入库。
在PostgreSQL中,同样可以利用FDW实现金融报文的处理。例如前端的前置系统会不停地将文件上传到OSS(这是一个阿里云的对象存储服务,用户可以将各种文件或对象存储于这个服务引擎中),FDW就可以访问OSS读取这些文件,具体操作如下图所示:
图八 FDW实现OSS操作
从上图可以看到,整体过程首先需要创建oss_fdw的插件;然后创建server,用于定位到OSS中的数据位置;接着创建基于OSS文件目录的名部表,将目录下所有文件的数据以表的形式展现;通过表的方式对OSS中的数据进行访问;再将OSS中的数据写入到PostgreSQL数据库中;数据并行的从 ossexample 装载到 example 中;最后,可以看到 oss_fdw 能够正确估计 oss 上的文件大小,正确的规划查询计划。
FDW:物联网数据整合
现在来看一下物联网数据整合的过程。在物联网环境中,有智能手环、车载系统等设备产生的大量的非格式化数据存储在MongoDB中。目前常用的模式是通过应用程序硬编码打通服务器上的关系数据库和大数据库处理平台。
图九 FDW用于物联网数据整合
上图是将物联网环境整合到PostgreSQL中的具体示意图,应用程序通过MongoDB的语法对存储在MongoDB数据库中数据进行操作。当需要高效开发时,通过FDW利用SQL操作快速地实现对MongoDB的操作;此外,在PostgreSQL中的PostGIS的系统,支持复杂的地理信息的计算,车载系统等路径信息可通过PostGIS先预处理,然后再输送到大数据处理平台中。
PostgreSQL也可以与MongoDB直接操作,通过表的处理方式处理一些无需硬编码的操作。对于那些需要快速、高性能处理的业务,可以通过MapReduce进行处理性能优化。
值得注意的是,由于所有的操作经过FDW进行转换,如果选用的FDW的组件并不能将所有的查询、分析等操作下发到Hadoop或MongoDB中处理,这时就需要将数据从Hadoop或MongoDB中读入,然后再通过PostgreSQL进行分析处后传递给应用端,这样的方式在提升开发效率的同时,会导致一定的性能损耗。
FDW:解决企业并购重组问题
企业并购是很多开发商都会碰到的问题,母公司和其他并购的公司使用的数据库可能完全不同,总部会有自己的数据库要求。传统的模式是通过硬编码,将数据先汇总到总部,然后总部再做其他的处理;同时总部有新的数据出现时,需要再将这些数据下发到子公司内。整个编码操作非常冗余复杂,不仅延长了企业并购的时间,同时也增加了开发和管理难度。
图十 FDW解决企业并购重组问题
如上图所示,通过FDW的形式,将所有的子公司与总部系统打通,即便子公司的数据库在异地,FDW依然可以通过互联网的形式连接到数据库中;总部应用系统除了可添加PostgreSQL数据源实现对所有子公司数据进行查询外,也可以通过简单的SQL操作将子公司的数据与总部数据进行整合;甚至可以将总部数据库与PostgreSQL进行打通连接,这样一来,各家子公司就可以访问权限范围内的总部数据。
总结
PostgreSQL是一个非常强大、功能齐全的开源数据库,本文重点介绍的只是FDW和JSON处理,未来期待更多的开发者成为PostgreSQL新生的一代,共同推进其在国内的发展。
关于分享者
萧少聪(铁庵) ,PostgreSQL中国用户会创始人之一、阿里云ApsaraDB for RDS PostgreSQL/PPAS产品专家、EnterpriseDB认证数据库专家、RedHat RHCA认证架构师。
ApsaraDB for RDS PostgreSQL产品页面:https://www.aliyun.com/product/rds/postgresql
相关系列文章:
《21天搭建推荐系统:实现“千人千面”个性化推荐》
《美女程序媛:教你玩转云存储——数据上云实战》
《干货:阿里云云数据库PostgreSQL最佳实践》
《虎嗅网架构演进》
《Faceu的分布式数据库实战》
《微博:内部Docker技术揭秘》
《有货:六层混合云架构打造中国最潮生态圈》
《美柚:最懂女性App背后的混合云架构与大数据服务》
《涂鸦科技:支撑从零暴增数十亿数据的背后,竟无专职运维! 》
《爆款App小咖秀:服务端架构设计分享》
《空格App:云上多场景技术架构实践与经验》
《驴妈妈:基于混合云的旅游产品数据分析系统》
《游族网络:如何运维千台以上游戏云服务器》
《淘宝丁奇:如何解决影响MySQL使用的9大问题》
纵览双11全球狂欢节所有数据和技术要点!1207亿,马云说:所有的创新都是被逼出来的!
云栖社区前线记者直播双11全球狂欢节30小时,感谢大家的陪伴!我们还在策划将在12月准备一期和双11技术复盘相关的在线技术峰会,欢迎告诉我们你的建议。如果想知道大会详细内容,请关注云栖社区微信公众号。
双11让我们意识到:云计算、人工智能让技术不再是后台支撑,而是挖掘需求的关键;马老师说“电子商务”将消失,新五通一平将引领未来。看不见的部分才精彩,云栖社区记者已到媒体中心,图文直播30小时,为大家解读今年的双11阿里技术运用、保障以及数据为代表的新能源上有哪些看点?幕后有什么故事?
欢迎搬小板凳、自带瓜子,于2016年11月10日19:00看云栖社区的图文直播(技术爱好者,也可以逛逛我们技术人的双十一:阿里云双11大促狂欢主会场)截止到11月11日24:00,2016阿里云双11的战报是超1.9亿。
在社区所直播的30小时的2016双11狂欢节中,特别整理出所有的数据要点和技术要点,是沉淀,也是一种新思考:
0点之前,2016双十一狂欢夜晚会,68亿次点赞数!中国直播历史上里程碑式的数字。晚会负责人破天(花名)透露,截止到10日23点46分,屏幕前的观众通过手机淘宝、天猫,点赞数超过68亿次。68亿次是什么概念?相当于全球消费者每人都点了一次!破天还指出,当下互动数很重要,而不是收视率
00:00:00-01:00:00,52秒成交10亿、6分58秒成交100亿,第1个小时成交353亿。阿里巴巴CEO张勇解读称意义很大。三年前——2013年整天的交易是351亿,而这个数字,在今天只用了一个小时完成,“过去一天的交易额在一个小时就完成,背后说明了消费升级、用户对互联网的热爱,以及网络上消费已经成为一种生活方式。”。
01:06:00,支付笔数破2亿!超越了2013年全天1.88亿笔。今年的1个小时超过了2013年全天。
02:30:20,2016双11全球狂欢节交易额超500亿元,无线交易额占比83.72%。
06:54:52 ,超571亿元,打破2014年双11全天交易额纪录,无线交易额占比84.47%。
10:25:19,2016年双11全球狂欢节无线交易额626亿元,超过2015年11全天无线交易总额。
12:29:26,超824亿元,打破2015年全国社会消费品日均零售额。
15:19:13,2016双十一已完成去年全天交易额912亿。
18:55:36,成交额达到1000亿元!
22:13:03,成交额超过1111亿。值得纪念!
2016年双11全天交易额为1207亿,成交额相较去年增长32.32%(2015年的这一数字为912.17亿)。
技术要点:
11月10日晚上举办的双十一直播晚会,这背后就用到了阿里视频云ApsaraVideo直播平台,所以大家才能看到小贝和科比等众多明星。ApsaraVideo集合了阿里云底层基础设施的强大计算力,是经过反复实践的云+端完整解决方案并结合人工智能、安全技术,可以快速搭建并做到承载千万级并发,了解详情。
11月4日晚在阿里巴巴西溪园区,是双11之前的最后一次全链路压力测试(压测)。
阿里云人工智能机器人ET表演魔术的背后是阿里云iDST技术团队研发的智能语音交互(Intelligent Speech Interaction)系统, 包含语音识别、语音合成、自然语言理解等技术。【详情】
存储亿量用户关注信息的手淘微淘社区,都存储在云数据库Redis版上。
0点之前,主持人问阿里巴巴集团CEO张勇,24小时里最关键的是什么?张勇表示,有以下几点:技术上如何挑战0点涌来的峰值;如何与物流紧密合作,让一切运作顺利;保证支付系统顺畅;双十一期间,如何让大数据支持好商家,服务好消费者等。
1个小时刷新了两项新的纪录:交易订单数最高每秒达17.5万笔,而去年则是14.05万笔;支付最高峰值每秒达12万笔,而去年则是每秒8.59万笔。
双11同款作战大屏攻略 【详情】【体验400平米的“曲面IMAX”】
作为双11技术老牌主力军RDS已经第6年为双11护航,并保证0故障0丢单。【入口】“聚石塔把商家的订单推送到商家自己的RDS数据库中,打通整个交易数据全链路,在应对高流量的促销活动中,依靠RDS强大的弹性扩容能力,快速提升商家系统的计算能力,保障了商家系统在高流量压力情况下的稳定运行。”
对ET技术感兴趣:智能语音交互技术专题;阿里云人工智能ET魔术秀解密!和《技术和人文交织,记阿里云人工智能ET魔术秀幕后故事》。【入口】
2016双11开场30分钟,创造每秒交易峰值17.5万笔,每秒支付峰值12万笔的新纪录。需要指出的是,今年双11每一条消息都是通过Aliware MQ来流转,让超大型分布式架构更健壮。【入口】
11日14:33分,菜鸟单日物流订单量超过4.67亿,创历史新高。海量的库存和订单信息并发处理背后,阿里云自研的分布式PB级云数据库PetaData有着不可磨灭的功劳。【入口】
《GMLab实验室背后的技术灵魂:DIVA、3D扫描仪和光场的拍摄设备》,天然的跨平台解决方案,在明年春季会正式将造物神计划通过开放平台释放给商家和合作伙伴。
“双11”全链路指挥中枢搬上钉钉,全链路加密。
马老师说最大的挑战是技术。在最初的双11,银行系统都崩溃过,物流也都是依靠人力。但所有的创新都是被逼出来的。推荐:来自央行观察专栏作家由曦的文章,《马云为何还要做92届双11?》。
张勇的双11全球狂欢节复盘。
以下是图文直播:
【1207亿数字背后 & 新零售的起点】阿里巴巴集团CEO张勇12日凌晨感谢现场的媒体记者演讲中指出,2016双11是新零售的一个起点,在未来几年,传统电子商务将逐渐与线下实体商务融合,而在这个变革中,大数据会起关键作用。同时,在过去24小时内,有超过4700万用户消费者购买了国际品牌商品,国际品牌平均增长47%,这两组数字的背后意味着阿里巴巴国际化迈出坚实的一步。此外,张勇还表示,以互动为代表、直播为载体, 消费娱乐化将进行到底”在今年的双11移动端体现的尤为彻底:共组织了6W多场的直播,累计观众7.7亿人次;首创了边看边买的,实体与互联网实时结合的互动体验;今年有超过26亿次游戏(包括商家);消费者参与的捉猫猫超过16亿次,其中高德地图在互动当中,扮演了非常重要的角色;在过去24个小时,完成6W+的数字化门店的“武装”,形成线上和线下的流动。最后,张勇还指出,时下,双11消费者正在发生变化,90年代正在成为主力,那么如何满足他们的需求,服务好越来越多的消费者将推动我们看到一个个更精彩的狂欢节。
【最后数据】2016年双11全天交易额为1207亿,成交额相较去年增长32.32%(2015年的这一数字为912.17亿)。
【11日23:50】最后10分钟,大家静静等待。此时的大屏是1191亿+。
【11日23:18】马老师来到深圳大运中心媒体中心,全场“轰动”,后面的记者全部涌到前面。在马老师看来:最大的挑战是技术。在最初的双11,银行系统都崩溃过,物流也都是依靠人力。但所有的创新都是被逼出来的。银行、物流是如此,新商业文明的形成也是如此。为了今年双11凌晨的1-2分钟,阿里的研发投入超越所有人的想象。2000多名客服,服务近5个多亿的消费者,2500多名工程师,超过很多企业的研发投入。“我看到,阿里的大数据工程师还在研究如何帮助商家保持0库存,避免压货的风险。我相信:再有20年,双11会相对完美一些。”
谈到新零售,马老师认为:线上线下的结合,传统和互联网的结合是趋势。无论是PC还是移动端,都是将技术变成普惠技术,所有商家都可以享受到。
【11日22:40】现场大屏播报飞猪(原阿里旅行)的数据统计,截止到现在,国人愿意境外游的目的地排名是:
【11日22:13:03】成交额超过1111亿。值得纪念!
【11日22:00】在等待1111亿的时候,发现有朋友分享了一篇来自科技树的内容,描述“双11”作战指挥系统。随后在钉钉公众号上也看到了这篇文章。其中有些技术细节:往年双11的调度,分散在多个平台上,今年全部搬上了钉钉。钉钉高度的智能化以及超强的信息负载能力能支持天量爆表;DING被用了数万次之多,高效信息传递;双11的很多数据可以说是商业机密,而钉钉的军事级全链路加密,等于为信息加了多重保险柜。钉钉的“密聊”阅后即焚不留痕迹,在“双11”涉密交流中也大显身手。除此以外,还有“万人”大群。
来自科技树的一篇文章,描述钉钉上的作战系统
【11日21:30】目前有个圆桌讨论,主要是商家对新零售的看法。其中对新技术应用场景的讨论有很多,比如AR/VR等技术在昨日晚会的航拍,比如捉猫猫等游戏中,都已经应用。
【11日21:19】1075亿了,大屏还在不断变化。我们期待着最后时刻技术负责人的解读!
【11日20:14】在今天下午的媒体中心,除了让记者体验到VR购物外,淘宝移动平台资深总监庄卓然还分享了GMLab实验室背后的技术灵魂---造物神计划,分别通过DIVA、3D扫描、光场扫描三种产品实现不同程度的3D建模解决方案。Diva能够将固定的产品制作出一个类似于3D的还原效果,3D扫描仪能够360°建模,详情请阅读。
【11日18:55:36】成交额达到1000亿元!
【11日18:16】目前支付总笔数已达8亿笔,无线支付占比71%。其中,蚂蚁花呗支付笔数占比21%,已撬动消费总金额228.52亿元。
【11日17:00】前面提到的服务调用数据很多朋友都很关注。从技术上看,它的实现很简单,只需要通过Aliware旗下的EDAS产品(企业级分布式应用服务)就能轻易实现业务的服务化转型、调用可管可控。EDAS充分利用阿里云现有资源管理和服务体系,引入中间件成熟的整套分布式计算框架(包括分布式服务化框架、服务治理、运维管控、链路追踪和稳定性组件等),以应用为中心,轻松构建并托管分布式应用服务体系。【详情】
双11全球狂欢节大屏,给力。
【11日16:50】阿里巴巴商家事业部总经理张阔表示:刚刚看到无线成交占比83%,实际一直都很高。而且今年除了内容升级,图片文字等商品,还有多媒体,以及天猫与线下商家共同主办的“AR捉猫猫活动”的新玩法,捉猫次数超过17亿次。这些也许会成为新零售的未来。
【11日16:40】风能、模块、能耗、设计、运维,“20张图!阿里张北数据中心竟然是这样的”,而参加启动仪式的报道也很深入。
【11日16:35】阿里巴巴集团CTO张建峰在和深圳媒体中心连线时表示,双十一是对技术人一年一度的大考,而且随着数据创造更大纪录,试卷也越来越难。但正是这种锻炼,也让阿里拥有全球最领先的交易系统。在连线中,张建峰更分享了阿里在巨大交易量背后的一些技术细节:服务器方面,大规模使用了阿里云云计算的技术,不用人工干预,自动化部署;数据库方面,在非常低成本的情况下,完成了金融级别安全性;中间件上,进行了大量深入研究,并大量使用了自研产品,包括消息处理、负载均衡、消息同步等,这些无不彰显阿里自研技术已全球领先水平;机器自动生成,人工干预非常少,大量使用了人工智能、机器学习技术。搜索页千人前面,根据用户浏览习惯实时计算,为每个人打造了属于自己的淘宝。系统评估、降级等工作已完全自动化,同时双十一零点后场景与平常演练契合度非常高,一切都在可控的范围内。张建峰最后还指出,这个全球领先、且非常健壮的金融系统完全使用互联网架构,且是阿里巴巴自主研发。
【11日16:10】“史上最伟大”魔术师ET降临媒体中心,在与阿里云何云飞对答如流的交互中,更曾“反问”云飞。ET是由阿里云研发的人工智能机器人。众所周知,ET的“博古知今”得益于阿里前沿的人工智能与大数据技术,目前在杭州城市大脑、杭州云栖大会演讲语音识别等方面得到应用。同时,何云飞在本环节分享中也介绍了阿里云所提供的云计算能力无处不在服务着大家,比如微博、12306等,以及政府等。他也透露说,在近日公布的CloudSort排序中,阿里云更以1.44$/TB的成绩夺冠,将世界数据处理成本降低到1/3,具体技术请见【入口】。
【11日15:19】15:19:13,15小时19分13秒,2016双十一已完成去年全天交易额912亿。
【11日15:13】全新VR购物体验将让未来的双11不用剁手:只用视线(屏幕中央的圆点)对着聚焦就可以完成点击,购物最快可以在15秒内完成;此外,360度真实环境环绕,足不出户就可以败遍全世界,男同学再也不用担心商场逛断腿。
【11日14:33】11日14:33:36,菜鸟单日物流订单量超过4.67亿,创历史新高。
【11日14:00】云栖社区记者已经到了深圳的媒体中心。有个小惊喜:每个人桌上都摆了一副VR眼镜,这是?
【11日13:30】云栖社区在2016杭州云栖大会的直播中,马老师的“新五通一平”文章阅读数突破12万。其中“新零售、新制造、新金融、新技术、新资源,都将对各行各业有巨大的冲击和影响,把握则胜”的观点在业内有诸多解读。新零售是“线上、线下+物流”,也是线上线下商业元素需要重构的一场化学反应。而历届双11都是观察新零售中电商渠道非常好的窗口。
商业观察家的《“双11”另一面:秣马厉兵“新零售”》很深入,文章中提到:受邀参加天猫“双11”全球狂欢夜的猴王、步步高集团董事长王填在朋友圈里感言:来深圳大运会体育馆不是追星而来,而是追寻线下线上如何融合发展?如何产生化学反应而重构?新零售不是概念而是未来。
纽约时代广场的天猫“双11”
【11日12:29】12:29:26,超824亿元,打破2015年全国社会消费品日均零售额。猜猜今年总成交额会是多少?
【11日12:00】来自千牛直播,主持人分享了一组截止11日12时的数据分析,很有意思:
2016双11全球狂欢节各省(区、市)交易额TOP10的第一名被广东省夺走,92.8亿的消费额遥遥领先。紧随气候的是浙江省: 78.7亿。而一墙之隔的江苏省以12亿元的差距位列第三。上海和北京分列四和五。前10名的还有山东、四川、湖北、福建及河南省。
一二线城市狂买的同时,三四线城市的网购一族也是热情奔放。2016双11全球狂欢节消费县TOP10已经出炉,前三位分别是江苏昆山、浙江义乌、浙江慈溪。前十名中浙江、江苏同样占据了四席。
2016双11全球狂欢节深圳市交易额25.64亿元,消费人群中男性占42.60%,女性占57.40%,差距并不大。而消费者年龄段人数分布:25岁以下占32.50%,26-35岁占48.92%,36-40岁占9.55%,40岁以上占9.03%,显然,青年在网购上投入更多。
【11日12:00】AI是世界范围的热议话题。要想深入了解10日晚上亮相的ET,智能语音方面可以看社区之前的选题:智能语音交互;魔术可以通过《阿里云人工智能ET魔术秀解密!》来了解。而对于背后的研发者:创意是怎么来的?从想法到拍板、再到落地,历时多久?有没有遇到什么坎,都是怎么解决的?技术上都有哪些亮点?等,这些开发者们都关注的问题,云栖社区采访了ET魔术环节的项目负责人李博。
通常这个魔术非常考验魔术师的记忆和推算能力。对ET来说,这些都不是难题。难的是整个过程中需要ET要具备高精确度、高实时性的视频识别能力,并用人类的语言和主持人沟通交流。因为直播环境受到场地、灯光、音效的影响,语音识别、视频识别都会受到很大考验。感兴趣的开发者可以详见他的分享:《技术和人文交织,记阿里云人工智能ET魔术秀幕后故事》。
【11日11:30】预告:云栖社区对技术专家的采访稿已经在路上。中午刊出。深度解读。
【11日11:00】深度解读的内容越来越密集了。每年刷爆朋友圈年年双11必有这类内容“天猫双11全行业及分类目榜单”。从各行业成交看,服饰、美妆、电器、手机等已成天猫绝对优势类目。详细目录可以看天下网商这篇内容《1小时连创新纪录!天猫双11全行业及分类目榜单在这里》。而社区最感兴趣的是这些破纪录后的这句话:张勇认为,“这是一个非常了不起的进步,整个技术能力又上了新台阶,并且在峰值上停留了相当长时间,也反映了消费者开场以后的持续热情。”
天猫服饰开场1小时,破亿元商家已有10个。优衣库仅用2分53秒就突破亿元,再次创造纪录,成为服饰类最快破亿品牌。adidas仅用16分钟就达到去年双11当天成交额,Nike仅用 10分钟就超过去年双11全天成交额。
天猫美妆仅用1小时3分就达到17亿元,超去年双11前8小时销售额。
天猫电器城仅36秒销售就破亿元。54分钟销售额突破50亿,比去年提前半小时。
天猫手机仅用1小时09分,销售额突破20亿元。仅用30分钟,已有荣耀、小米、魅族、苏宁易购4家成交破亿元。
天猫快消母婴1小时破41.9亿,食品行业4分钟过亿,零食5分钟破亿,16分钟酒水破亿,28分39秒三只松鼠过亿,亿滋22分钟超过去年双11全天的成交额。
【11日10:25】10:25:19,2016年双11全球狂欢节无线交易额626亿元,超过2015年双11全天无线交易总额。天猫微博是如此感慨的:“能不能给我买个手机?”“为什么?”“因为我想用它买下全世界。”:)
无线,真猛!
【11日10:20】2小时30分20秒总成交达到500亿,18分钟产生1亿个物流订单。每秒十几万的TPS ,数据精准的同时数据库性能稳定、DBA如此淡定的原因在于:核心交易数据库都是构建在分布式数据服务DRDS上。据悉,DRDS支持弹性扩展,可广泛应用于物流 、电商、金融、物联网等行业。流量洪峰轻松应对,历年双十一表现出色。【详情】
【11日10:00】对于今天凌晨1小时达成353亿交易额,再分享几个维度的观察:在最初的二十分钟,移动端占比一度达到90%多(更新:2016双11全球狂欢节开场仅用8分3秒,无线交易额就超过100亿元,无线交易占比曾一度逼近95%的峰值。),阿里巴巴CEO张勇解读称:
无线化已经变成每个人的生活方式;
全球化有两个数字很有意思:全球195个国家和地区,参与了全球狂欢;有13000个国际品牌参与到双十一中;
今年的数据大屏,新增了农村淘宝村淘消费排名和农村土特产排名。
“农村占据了消费人口的一半以上,这是一个巨大的市场。”张勇指出希望阿里乡村淘宝战略,能够让农村和城里人一样,消费到全球各地产品;同时也能让城里人共享到农村的土特产,“现在的双十一是一个庙会,变成了新的节日”。
【11日09:20】前方记者和媒体小伙伴们中午才会去现场,准备迎接下午的又一波数据高峰。编辑们则开始收集诸多报道,挑选一些独特的内容。比如DT财经的这篇《今年双11的数据大屏,是400平米的“曲面IMAX”视觉盛宴》。
2015年双11数据大屏:基于阿里云dataV数据可视化引擎实时渲染技术生成的旋转地球
2016双11数据大屏,400平米的“曲面IMAX”,还可以看到3D经济云图【详情】【同款攻略】
【11日08:34】现在正是上班高峰期,大家因为昨晚熬夜买买买是不是已经困意来袭了?假如...现在告诉你——昨晚下的单和付的钱商家都没收到,是否立马困意全无?!当然,这种事是不可能发生的。稳定、高效的背后,有一份功劳是云数据库RDS。聚石塔把商家的订单推送到商家自己的RDS数据库中,打通整个交易数据全链路,在应对高流量的促销活动中,依靠RDS强大的弹性扩容能力,快速提升商家系统的计算能力,保障了商家系统在高流量压力情况下的稳定运行。值得一提的是,作为双11技术老牌主力军RDS已经第6年为双11护航,并保证0故障0丢单。PS:【攻略】了解双11背后的云计算,双11当天购云数据库RDS 5折哦!
【11日07:30】就在交易额超500亿元时,夜里的杭州阿里是这样的。
【11日07:00】上班的同学们要来了。为了便于阅读,来个小结。将昨日内容归总下。比如晚会可以放到这里了。:)
2016天猫双十一狂欢夜晚会于2016年11月10日20:00点在深圳大运中心体育馆举行,晚会请来了国际最强明星阵容:科比•布莱恩特、托马斯•穆勒、One Repulic、“水果姐”、林志玲、李玟、TFBOYS、SNH48、李宇春、薛之谦、明道、张艺兴、华晨宇、宋茜、陆毅、品冠、李小鹏、贾乃亮等。娱乐至上,精彩纷呈。
【11日06:54】06:54:52 ,超571亿元,打破2014年天猫双11全天交易额纪录,无线交易额占比84.47%。
【11日02:30】02:30:20 ,2016天猫双11全球狂欢节交易额超500亿元,无线交易额占比83.72%。
【11日2:00】让数据在飞一会儿。引用我们技术小伙伴做的一张图《史上最“凶猛”技术大考》来收尾。我们9点见。
【11日01:37】关键数字——1小时06分,支付笔数破2亿!超越了2013年全天1.88亿笔。今年的1个小时超过了2013年全天。
【11日01:16】在刚刚过去一个小时刷新了两项新的纪录:交易订单数最高每秒达17.5万笔,而去年则是14.05万笔;支付最高峰值每秒达12万笔,而去年则是每秒8.59万笔。张勇表示,这充分体现了阿里的技术能力又上了一个台阶——阿里最新的技术实力!
【01:08】双十一第一个小时成交353亿!继52秒成交10亿、6分58秒成交100亿后,又一个数据出来,双十一第一个小时成交353亿!对于这个数字,阿里巴巴CEO张勇解读称意义很大。三年前——2013年整天的交易是351亿,而这个数字,在今天只用了一个小时完成,“过去一天的交易额在一个小时就完成,背后说明了消费升级、用户对互联网的热爱,以及网络上消费已经成为一种生活方式。”张勇指出。
【00:53】微博有朋友问:“双十一大屏霸气,能不能来个同款,复制一个?”我们赶快找到后方负责护航的小伙伴,他们直接“扔”过来一个同款数据大屏攻略。如果还想看绝招,可以看这里【双十一倒计时,剧透一个作战大屏!】
【00:40】780秒!第一单签收。第一单被来自佛山芦苞镇的消费者签收,商品是美的榨汁机。
【00:30】68亿次!中国直播历史上里程碑式的数字。晚会负责人破天(花名)透露,截止到10日23点46分,屏幕前的观众通过手机淘宝、天猫,点赞数超过68亿次。68亿次是什么概念?相当于全球消费者每人都点了一次!破天还指出,当下互动数很重要,而不是收视率。
【00:07】6分58秒,成交额过100亿。
【00:00】直接上图。震撼。最新消息:52秒,成交10亿,而去年这个记录,使用的时间是1分12秒。
【10日23:58】在11日零点之前,主持人问阿里巴巴集团CEO张勇,24小时里最关键的是什么?张勇表示,有以下几点:技术上如何挑战0点涌来的峰值;如何与物流紧密合作,让一切运作顺利;保证支付系统顺畅;双十一期间,如何让大数据支持好商家,服务好消费者等。
【10日23:40】大家是不是被阿里云人工智能机器人ET表演魔术的那一幕给惊呆了。不仅实时互动、全程实时速记,还猜出了每个人手里的牌是什么。那么,ET背后使用了哪些技术、游戏环节传递了什么?魔术环节的技术PM傲海在接受云栖社区记者采访时表示,ET利用数据编码的小游戏和观众进行互动,使用的是阿里云人工智能的语音识别、情感分析和人脸识别技术,它展示了底层阿里云机器学习技术的实力。想不想知道魔术游戏更多的幕后故事请点击这里。
【云栖社区曾做一个技术选题:智能语音交互】
关于大家关注的ET魔术秀,《阿里云人工智能ET魔术秀解密!》介绍的非常详细。
这里也简单介绍下:在ET这场魔术秀背后,是阿里云iDST技术团队研发的智能语音交互(Intelligent Speech Interaction)系统, 包含语音识别、语音合成、自然语言理解等技术。
通过学习录音资料,ET还能模仿指定个人的音色。而在ET识别黑牌的过程中,应用到的就是人工智能的图像识别技术,其功能准确度达95%以上。
在观众抽取扑克牌时,ET已经完成了对5位观众的面部识别,并利用算法建立了器官轮廓定位,以便之后识别出是否有人转身。之前ET检测出华少手上有新的物品,便触发了图像识别机制,“看出”华少手上多了一幅扑克牌。
目前,阿里云ET的人脸算法已经覆盖了人脸检测、器官轮廓定位、人像美化、性别年龄识别、1对1人脸认证和1对多人脸识别等多个方向,用机器学习的方法,包括卷积神经网络、Supervised Descent Method等,实现了高精度和高效的技术,人脸识别在LFW上识别率99.5%。
【10日23:30】安全至关重要。澎湃有一段视频采访很有意思,是“双11来临,揭秘阿里安全部员工是如何工作的”。其中,阳煦(阿里安全部小二)有一段话:“有一次映像特别深是,出差了一段时间,跑了几个城市,回来了之后女儿都不认识我了”。在犯罪发生的那一刻就需要感知并阻止,当意识到事情发生后,情况往往已经很严重了,在打击网络“黑灰产业”上,阿里人一直与时间赛跑。
【10日23:00】今夜大家都在聊什么?阿里云人工智能告诉你:“天猫双11狂欢夜,哪位明星网络最热”已有2400+人参与投票,下载阿里云APP感受房产解读、美国大选、电商鏖战等话题。
【10日22:40】云栖社区欢迎大家!——努努力过两年就去//@阿里云云栖社区:欢迎各路人才[抱抱]//@Hu俊伟137: 我也想加入这个团队[抱抱]@阿里云云栖社区。
【10日22:30】刚才放了一些之前压测时的图给大家感受气氛,有朋友告诉@阿里云云栖社区微博“这不够真切,为什么不上今晚的”。杭州小伙伴们立马行动,现场拍了几张。后方同学说现场很平稳。这就(准)是(备)实(充)力(足)。
【10日22:00】30多小时、600+媒体,为了让记者们更好迎接凌晨的“战斗”,阿里在现场还提供了什么保障?容记者先吃一点。:)
【10日21:50】上点干货,让大家激动激动。11月4日晚在阿里巴巴西溪园区,是双11之前的最后一次全链路压力测试(压测)。压测是阿里全系统每个环节都参加的双11实战演习,主要对零点峰值流量评估,以及对网站承压能力进行测试,是双11前为系统查缺补漏的重要一环。
阿里巴巴集团技术委员会主席王坚携CTO张建锋(花名行癫)、蚂蚁金服CTO程立等技术核心高管一同现身压测现场。照片中还是博士熟悉的笑容。
技术人员在机房巡查,机器和人一起都将迎接大考。
这就是双11背后神秘的程序员!
【10日21:30】双11就在2.5个小时之后,相信各位剁手党们早已经在购物车准备好买什么了,就算没准备好,相信也能在你关注的店铺里买到称心如意的宝贝。说到这里,大家知道存储亿量用户关注信息的手淘微淘社区么?为了有效保障了双11的社交互动,这些数据都存储在云数据库Redis版上。
这里要介绍下Redis——作为微淘社区的数据高速通道,它将复杂类型的关注信息简化存储并提供了高速访问。通过Redis集群的高性能和大容量存储,在双11期间为亿级用户的活跃社交提供了稳定的运行环境。【双11当天购云数据库Redis版5折】
【10日21:07】2016.11.11 万物互联,技无止境。这是我们所有人的心声!
双11的背后,最可爱的技术人
技无止境,学做舟!
2016年11月3日,阿里巴巴西溪园区晒出近3000床被子,这些被子将全部供给迎战双11的阿里人休息使用。
【10日21:00】这几张图太珍贵了。双11背后,是不眠不休的技术护航人员。了解阿里云的伙伴们,你们能认出几位?
【10日20:50】别急。技术解读都在凌晨以后。刚翻出了很多照片,都是杭州阿里巴巴备战双11的图片。大家欣赏欣赏。
【10日20:15】直播内外都在看贝克汉姆。虽然不是在晚会现场,但也可以看到直播。媒体中心也有记者在编写素材,刚要发微博——为粉丝抓拍到了。给同样奋战的记者来个背景照。
【10日20:00】主持人开场。他说,大家不一定能够记得马老师所说的“五通一平”是什么?但相信接下来24个小时,大家一定会知道新零售、新制造、新金融、新技术、新资源背后的意义和价值所在。【带大家回顾下:马老师说“电子商务”将消失,新五通一平将引领未来】
【10日19:50】从来内容直播都是不见硝烟的战场。我们已经准备好。如此多的同传设备,今晚肯定有外国小伙伴演讲。赶紧准备先!工作人员笑吟吟地说:“这是为外媒准备的。”刚进来时主持人介绍,今晚的媒体中心会有600+媒体。
【10日19:40】这就是今晚的媒体中心的,最贴心的是,现场插座、网络都安排妥妥的。
【10日19:00】展区匆忙逛了下,第一眼就看到阿里云的“无法计算的价值”,展区中心的“自由女神猫”挺有意思。
【10日19:30】终于到达期盼已久的主会场。下面是是今晚的会场入口(也可能只是媒体中心和展区的入口),听到一阵马达声,抬头一看才发现是“神秘”飞行器,难道今晚用它拍天猫双十一狂欢夜晚会现场?
【10日19:00】记者在深圳排队入场。编辑们都在北京这里。阿里云双11大促狂欢主会场。攻略入口在这里《阿里云双十一攻略汇总:充值返券,好价不断,分会场入口,持续更新》,秘笈在这里《怎样在双十一买到最实惠的阿里云产品?快来看网友们的经验分享!》。
阿里云双11大促狂欢主会场 设计太棒了
【10日18:30】记者牌已经拿到,出发去现场。从朋友圈看到很多美图,上一张。
【10日18:00】杭州小伙伴们百忙之中发来一张图,很有感觉。
【10日17:30】云栖社区编辑部的小伙伴们购物车都已经满满。大家在讨论今年总成交额能到多少?去年的数字咱们先温习下:2015天猫双十一成交额:总成交额达912.17亿。00:01已经10亿。今年大家猜猜?
2015天猫双十一成交额图谱
【10日17:00】云栖社区记者张勇已到签到处。了解到今晚的行程是:18:00开始签到,18:30去深圳大运中心,20:00-11日01:15可以“坐镇”媒体中心为大家带来一手消息。PS:预计19:00可以开始更新:)。
centos7.x搭建gitlab9.2.2
1、介绍
GitLab 是一个用于仓库管理系统的开源项目。
2、官方硬件介绍配置
CPU
1 核心CPU最多支持100个用户,所有的workers和后台任务都在同一个核心工作这将导致GitLab服务响应会有点缓慢。
2 核心 支持500用户,这也是官方推荐的最低标准。
4 核心支持2,000用户。
8 核心支持5,000用户。
16 核心支持10,000用户。
32 核心支持20,000用户。
64 核心支持40,000用户。
如果想支持更多用户,可以使用 集群式架构
Memory
安装使用GitLab需要至少4GB可用内存(RAM + Swap)! 由于操作系统和其他正在运行的应用也会使用内存, 所以安装GitLab前一定要注意当前服务器至少有4GB的可用内存. 少于4GB内存会导致在reconfigure的时候出现各种诡异的问题, 而且在使用过程中也经常会出现500错误.
最后官方最后的提醒:
1GB 物理内存 + 3GB 交换分区 是最低的要求,但我们 强烈反对 使用这样的配置。 查看下面unicorn worker章节获取更多建议。
2GB 物理内存 + 2GB 交换分区 支持100用户,但服务响应会很慢。
4GB 物理内存 支持100用户,也是 官方推荐 的配置。
8GB 物理内存 支持 1,000 用户。
16GB 物理内存 支持 2,000 用户。
32GB 物理内存 支持 4,000 用户。
64GB 物理内存 支持 8,000 用户。
128GB 物理内存 支持 16,000 用户。
256GB 物理内存 支持 32,000 用户。
如果想支持更多用户,可以使用 集群式架构
关于官网的unicorn我并未详细查阅,都是英文,看起来非常吃力!
3、GitLab服务构成
GitLab由以下服务构成:
nginx:静态Web服务器
gitlab-shell:用于处理Git命令和修改authorized keys列表
gitlab-workhorse:轻量级的反向代理服务器
logrotate:日志文件管理工具
postgresql:数据库
redis:缓存数据库
sidekiq:用于在后台执行队列任务(异步执行)
unicorn:An HTTP server for Rack applications,GitLab Rails应用是托管在这个服务器上面的。
经我统计,一共8个组件。
4、官方的推荐安装方式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
1、安装配置依赖项
如想使用Postfix来发送邮件,在安装期间请选择'Internet Site'. 您也可以用sendmai或者 配置SMTP服务 并 使用SMTP发送邮件.
在 Centos 6 和 7 系统上, 下面的命令将在系统防火墙里面开放HTTP和SSH端口.
sudo yum install curl policycoreutils openssh-server openssh-clients git -y
sudo systemctl enable sshd
sudo systemctl start sshd
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix
sudo firewall-cmd --permanent --add-service=http
sudo systemctl reload firewalld
2. 添加GitLab仓库,并安装到服务器上
curl -sS http://packages.gitlab.cc/install/gitlab-ce/script.rpm.sh | sudo bash
sudo yum install gitlab-ce
如果你不习惯使用命令管道的安装方式, 你可以在这里下载 安装脚本 或者 手动下载您使用的系统相应的安装包(RPM/Deb) 然后安装
curl -LJO https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-XXX.rpm
curl -LJO https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-9.2.2-ce.0.el7.x86_64.rpm
rpm -i gitlab-ce-9.2.2-ce.0.el7.x86_64.rpm
rpm -i gitlab-ce-XXX.rpm
3. 启动GitLab
sudo gitlab-ctl reconfigure
4. 使用浏览器访问GitLab
首次访问GitLab,系统会让你重新设置管理员的密码,设置成功后会返回登录界面.
默认的管理员账号是root,如果你想更改默认管理员账号,请输入上面设置的新密码登录系统后修改帐号名.
参数配置和故障排查请查看 Omnibus GitLab 文档
GitLab-CE中国镜像源 清华大学TUNA开源镜像站, 浙江大学开源镜像站
*. *.
*** ***
***** *****
.****** *******
******** ********
,,,,,,,,,***********,,,,,,,,,
,,,,,,,,,,,*********,,,,,,,,,,,
.,,,,,,,,,,,*******,,,,,,,,,,,,
,,,,,,,,,*****,,,,,,,,,.
,,,,,,,****,,,,,,
.,,,***,,,,
,*,.
_______ __ __ __
/ ____(_) /_/ / ____ _/ /_
/ / __/ / __/ / / __ `/ __ \
/ /_/ / / /_/ /___/ /_/ / /_/ /
\____/_/\__/_____/\__,_/_.___/
gitlab: Thank you for installing GitLab!
gitlab: To configure and start GitLab, RUN THE FOLLOWING COMMAND:
sudo gitlab-ctl reconfigure
gitlab: GitLab should be reachable at http://localhost
gitlab: Otherwise configure GitLab for your system by editing /etc/gitlab/gitlab.rb file
gitlab: And running reconfigure again.
gitlab:
gitlab: For a comprehensive list of configuration options please see the Omnibus GitLab readme
gitlab: https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md
gitlab:
It looks like GitLab has not been configured yet; skipping the upgrade script.
gitlab所有的工程目录都在/var/opt/gitlab/下,你可以在这个目录看到他们所有的组件
5、更改gitlab配置
vim /etc/gitlab/gitlab.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#修改GitLab配置文件中的external_url,修改这个配置会影响GitLab里面显示的仓库链接
external_url 'http://gitlab.abc.com'
#时间区域,但是我修改这个时区后无法正常访问,失败原因为查询
gitlab_rails['time_zone'] = 'Asia/Shangha'
#修改gitlab数据存储路径
git_data_dirs({ "default" => { "path" => "/data/gitlab_data"}})
#设置nginx监控端口,访问的时候是http://gitlab.abc.com:9000
nginx['listen_port'] = 9000
#Gitlab 修改备份文件默认目录
gitlab_rails['backup_path'] = '/data/gitlab_backups'
#163邮箱配置
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "xxx@163.com"
gitlab_rails['smtp_password'] = "xxxxxx"
gitlab_rails['smtp_domain'] = "163.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['gitlab_email_from'] = 'xxx@163.com'
gitlab_rails['gitlab_email_display_name'] = 'Gitlab'
6、启动gitlab
1
2
sudo gitlab-ctl reconfigure
sudo gitlab-ctl start
启动后,登陆web界面,记得使用管理员账号关闭开放注册认证sign-up,禁止别人注册使用。
7、gitlab备份
Gitlab 创建备份,会在备份目录/data/gitlab_data下生成tar文件
1
gitlab-rake gitlab:backup:create
8、gitlab常用命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
查看服务状态
$ sudo gitlab-ctl status
启动服务
$ sudo gitlab-ctl start
关闭服务
$ sudo gitlab-ctl stop
重启服务
$ sudo gitlab-ctl restart
设置完配置后重新加载配置
$ sudo gitlab-ctl reconfigure
查看nginx日志
gitlab-ctl tail nginx/gitlab_access.log
9、汉化
1
2
#汉化
https://gitlab.com/xhang/gitlab
10、不小心把signin登陆窗口关闭了,可以使用这个办法解决
1
2
3
4
5
6
#Gitlab - 如何解決 "No authentication methods configured on login page" ? (gitlab version : 9.2.2)
sudo gitlab-psql -l 查看資料庫列表
gitlab-psql gitlabhq_production
UPDATE application_settings set signin_enabled=true;
\q
sudo gitlab-ctl restart
参考:
https://www.gitlab.com.cn/downloads/#centos7
http://www.jianshu.com/p/a22eaa1fcfe7
https://docs.gitlab.com.cn/ce/install/requirements.html
https://bbs.gitlab.com.cn
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md
本文转自 yanconggod 51CTO博客,原文链接:http://blog.51cto.com/yanconggod/1941718