• 关于

    时间数据库怎么看配置

    的搜索结果

回答

Re读写分离后的数据一致性问题 优化数据库。(废话了) 1、将数据库体积定时的清理保持苗条的身材。 2、表要尽量简单,关系不要太复杂,尽量不要太多索引。 提升配置。 提升配置治标不治本啊。 优化程序。 1、利用客户端缓存,减少对数据库的反复读取,当用户读取一次评论之后便将评论信息写入本地cookie,当用户在一段时间内不停刷新页面的时候,就不让他再读数据库了直接去cookie里面取数据。添加到数据库数据成功的同时也返回数据告诉客户端也添加到cookie里面去。这样用户就知道他自己成功评论了,而且不论他怎么刷都伤不到服务器。 2、利用缓存服务器的缓存,减少对数据库的反复读取,和cookie差不多,只不过是存在了服务器的内存里面。这样比读数据库快,但是需要注意这种情况下,如果用户玩命的刷,服务器还是很伤。就算是读内存还是得读服务器的东西。 3、没必要将所有的评论都放在数据库里,如果评论太多太久远的没有意义的就删了吧。或者干脆静态化了得了,减少数据库的体积。 4、关于同一时间并发的评论,直接先不写数据库,先全写到内存里去合并数量,然后按照数据库能接受的节奏,写进数据库。其实这个也是治标不治本,真正的洪流来了,怎么优化都没用。直接封IP吧。 最后的大招: 告诉用户他的数据已经提交,但是服务器更新需要一定的时间,请不要着急等30秒后刷新看看。这招最简单,根本就不用什么程序。

ayouny 2019-12-02 01:46:18 0 浏览量 回答数 0

回答

Re准备入手阿里云,咨询几个事? 1 备案时间一般是30左右,怎么让时间最少看运气了 2 可以在自己的主机上使用数据库,也可以购买阿里云的数据库 3 你所说的升级是配置升级? 随时都可以升级

boling 2019-12-01 23:48:27 0 浏览量 回答数 0

问题

数据库百问,教你快速上手数据库

yq传送门 2019-12-01 20:16:46 31116 浏览量 回答数 21

Quick BI 数据可视化分析平台

2020年入选全球Gartner ABI魔力象限,为中国首个且唯一入选BI产品

回答

<p>插入时间太长,超时了吧。</p> 应该不是超时,我看了下插入一万几秒钟后数据库就有全部数据了,但是代码却不往下执行了 <p>可能内存溢出,程序挂了</p> 怎么才能准确的判断是不是内存溢出呢 <p>打印一下stack看看是卡在哪个环节了,贴一下图看看</p> 求指教 就是卡在插入语句,他不往下执行也不报错,该怎么打印呢 mysql有插入限制 需要自行分批插入 限制瓶颈有确定的值么 sql语句长度限制.my.ini中有相关配置 可以加大,不过对于不确定sql有多大的情况还是自行分批插入 <p>批量insert,比如1w的数据 分割成10份1000的数据,循环10次</p> 嗯,谢谢,这个解决方案我知道 我只是想弄清楚为啥数据成功插进数据库了,然后代码不往下执行,也不报错 <p>我刚才换成了本地库,他报内存溢出了,将本地库max_allowed_packet从默认的1M改成10M成功插入了,我们测试库不知道什么情况,数据可以成功插入,代码卡死不往下执行,连错都不报,可以断定是测试数据库的问题了,谢谢各位!</p>

爱吃鱼的程序员 2020-06-06 10:26:51 0 浏览量 回答数 0

回答

Re建立数据库连接时出错(504GatewayTimeout) 504网关的时间 该网关不从上游服务器或应用程序接收到及时响应。很抱歉给您带来不便。 请报告这个消息,包括以下信息给我们。 谢谢你! 貌似这个意思 ------------------------- 回6楼氧分子网的帖子 看你的MYSQL怎么配置的。。设置个你现在网站实际使用的值。如果服务器资源不够的话建议升级配置。具体要进去linux排查。不是这里说怎么就是怎么的。你要看到具体那个个地方出现的问题。。对症下药。说谁都会说。MySQL总连接数 -可能的连接数-索引的缓冲区大小-查询排序的缓冲区大小-读查询的缓冲区大小-联合查询的缓冲区大-缓冲区的线程数量-查询缓冲区的大小.根据你服务器的资源和实际需求做出相应的调整。 还有看看Apache配置是否适合你现在的使用实际情况。出现问题全部 检查下就知道哪里出现的问题。。把配置文件都排查下就知道了如果服务器资源充足。

holdb 2019-12-01 23:23:55 0 浏览量 回答数 0

问题

项目用druid,长时间不访问应用,再访问又连接不上了数据库了?报错

爱吃鱼的程序员 2020-06-14 22:38:49 0 浏览量 回答数 1

回答

<p>楼主最终怎么解决的啊</p> 回复 <a class="referer" target="_blank">@HeartArea</a> : 我也是主从分库,不知道怎么去解决,能麻烦告诉下怎么设置的吗 最后发现是我们用的分库中间件的问题。就是超时时间的问题 <p>求解啊,在线等,急</p> <p>你是不是用的mycat??</p> 不是,是TDDL <p>数据库连接相关的有三个超时参数,如下:</p> 1.connectionRequestTimout 指从连接池获取连接的timeout 2.connetionTimeout 指客户端和服务器建立连接的timeout,  就是http请求的三个阶段,一:建立连接;二:数据传送;三,断开连接。超时后会ConnectionTimeOutException 3.socketTimeout 指客户端和服务器建立连接后,客户端从服务器读取数据的timeout,超出后会抛出SocketTimeOutException 你看看都设置的是啥,可以通过配置显式的 设置一下

爱吃鱼的程序员 2020-06-07 17:26:02 0 浏览量 回答数 0

回答

1、阿里云扶持型套餐为什么只能绑定两个域名啊?能不能多绑定几个啊?       (目前不能,应该是考虑到备案人工成本高) 2、云主机只能安装PHPWIND程序吗?我想用其他程序建站可以吗?        (你可以安装其他程序,按官方说法,你需要有一个才有phpwind搭建的站点,不过你可以随意在二级域名下安装一个应付) 3、阿里云主机续费和购买的价钱一样吗?          (目前购买的套餐续费价格一样,年付只需支付10个月) 4、阿里云扶持型套餐可以建几个数据库?          (不限,但需根据你的站点数据库大小和负载情况而定) 5、云主机能自动备份吗?一般多久备份一次?           (会自动快照,多久一次未知,按行内应该不超过7天一次) 6、如果数据库或者网站里面的文件丢失或者损坏能找回来吗?             (提交售后,找快照) 7、阿里云为什么不开通QQ客服。。这里发帖解答的太慢了。没QQ和53KF效率高            (其实提交工单的做法,挺多大公司都这么做,相应速度确实要加快,可能目前人手不够) 8、有哪些站用阿里云扶持型套餐?能不能发两三个站点给我看看?·             (查看案例 http://phpwind.aliyun.com/front/case,或论坛找找有人发的。) 9、阿里云主机的配置中哪个操作系统性能最好。云主机是不是什么格式的网页文件都支持?              (使用php程序建议选用linux系统,如centos、redhat等。采用asp、asp.net程序需选用windows2008。支持的网页格式没有限制,由你自行配置系统运行环境) 10、如果我现在用的是扶持型套餐,不够用了我换成标准型套餐怎么收费?            (查看《套餐升级帮助》 http://bbs.aliyun.com/read.php?tid=5739) 11、云数据库服务是什么东东?为什么里面只能选择1G?为什么是试用?难道以后还要单独买云数据库吗?             (试用时间一年,正式上线需要付费。你可以不采用云数据库,可在自己的云主机上配置mysql环境,数据库大小由硬盘大小决定) 12、如果不会操作云主机,有没有客服手把手指导??              (按目前反映来看,客服可负责免费有限次配置环境,响应服务器故障,phpwind程序可提供简单技术支持)

migee 2019-12-02 02:30:33 0 浏览量 回答数 0

回答

请贴出完整的异常堆栈######已补异常信息###### 对此不熟,貌似xml中的属性名写错了。driverClass? ######回复 @ldl-1023 : 大部分时间都是用jfinal。ssh很少用了。######你用的都是spring或其他方式###### "Druid是根据url前缀来识别DriverClass的,这样使得配置更方便简洁。" 结合JdbcUtils的代码 https://github.com/alibaba/druid/blob/master/src/main/java/com/alibaba/druid/util/JdbcUtils.java 来看, 应该是没有读到hibernate的配置信息才导致的. 可以往这个方向排查看看. 如果还是解决不了, 最好提供一下你的项目目录结构, 以及hibernate的配置文件相关的目录. ######没有 oracle-jdbc的jar包?###### 引用来自“JacarriChan”的评论没有 oracle-jdbc的jar包? 如果引入了,看是不是重复了。 如果没有重复,建议你断点到“JdbcUtils.java:354”看它在找哪个class ######你好,你的问题解决了没呢?我也是报这个错误,断点进去和你一样的错,发现是jdbcUrl 的值为null,怎么处理呢 ?###### 数据库连接信息要放在数据库连接池之前 ######<property name="driverClassName">com.mysql.jdbc.Driver</property> <property name="url"> jdbc:mysql://127.0.0.1:3306/lian?autoReconnect=true&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false </property> <property name="username">root</property> <property name="password">root</property> 需要配置你的数据连接信息

kun坤 2020-06-12 22:09:15 0 浏览量 回答数 0

回答

请贴出完整的异常堆栈######已补异常信息###### 对此不熟,貌似xml中的属性名写错了。driverClass? ######回复 @ldl-1023 : 大部分时间都是用jfinal。ssh很少用了。######你用的都是spring或其他方式###### "Druid是根据url前缀来识别DriverClass的,这样使得配置更方便简洁。" 结合JdbcUtils的代码 https://github.com/alibaba/druid/blob/master/src/main/java/com/alibaba/druid/util/JdbcUtils.java 来看, 应该是没有读到hibernate的配置信息才导致的. 可以往这个方向排查看看. 如果还是解决不了, 最好提供一下你的项目目录结构, 以及hibernate的配置文件相关的目录. ######没有 oracle-jdbc的jar包?###### 引用来自“JacarriChan”的评论没有 oracle-jdbc的jar包? 如果引入了,看是不是重复了。 如果没有重复,建议你断点到“JdbcUtils.java:354”看它在找哪个class ######你好,你的问题解决了没呢?我也是报这个错误,断点进去和你一样的错,发现是jdbcUrl 的值为null,怎么处理呢 ?###### 数据库连接信息要放在数据库连接池之前 ######<property name="driverClassName">com.mysql.jdbc.Driver</property> <property name="url"> jdbc:mysql://127.0.0.1:3306/lian?autoReconnect=true&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false </property> <property name="username">root</property> <property name="password">root</property> 需要配置你的数据连接信息

kun坤 2020-05-31 19:00:33 0 浏览量 回答数 0

回答

请贴出完整的异常堆栈######已补异常信息###### 对此不熟,貌似xml中的属性名写错了。driverClass? ######回复 @ldl-1023 : 大部分时间都是用jfinal。ssh很少用了。######你用的都是spring或其他方式###### "Druid是根据url前缀来识别DriverClass的,这样使得配置更方便简洁。" 结合JdbcUtils的代码 https://github.com/alibaba/druid/blob/master/src/main/java/com/alibaba/druid/util/JdbcUtils.java 来看, 应该是没有读到hibernate的配置信息才导致的. 可以往这个方向排查看看. 如果还是解决不了, 最好提供一下你的项目目录结构, 以及hibernate的配置文件相关的目录. ######没有 oracle-jdbc的jar包?###### 引用来自“JacarriChan”的评论没有 oracle-jdbc的jar包? 如果引入了,看是不是重复了。 如果没有重复,建议你断点到“JdbcUtils.java:354”看它在找哪个class ######你好,你的问题解决了没呢?我也是报这个错误,断点进去和你一样的错,发现是jdbcUrl 的值为null,怎么处理呢 ?###### 数据库连接信息要放在数据库连接池之前 ######<property name="driverClassName">com.mysql.jdbc.Driver</property> <property name="url"> jdbc:mysql://127.0.0.1:3306/lian?autoReconnect=true&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false </property> <property name="username">root</property> <property name="password">root</property> 需要配置你的数据连接信息

montos 2020-05-31 22:45:33 0 浏览量 回答数 0

问题

如何设计才可以让系统从未分库分表动态切换到分库分表上?【Java问答】42期

剑曼红尘 2020-06-22 11:05:45 34 浏览量 回答数 1

问题

买阿里云是用来做什么?难道会让摸不着头脑的配置环境拦着你/?

dieshang668 2019-12-01 21:36:03 12350 浏览量 回答数 10

回答

配置管理可以分两块: 1.静态配置统一放在一个目录: res/default/ 默认配置 jdbc. properties web.properties xxx.properties res/dev 本地开发配置(dev配置会自动覆盖default配置) 作用:开发 测试 正式 可以分开管理 2.动态配置部分: 静态配置文件 一般改了之后要重新启服务,很多时候希望动态改变配置,不用重启就能生效。 1.JOB自动从DB加载对应配置项,动态改变static 配置变量值。 2.手工更新配置项。 如果觉得这个办法不错,可以采纳为答案,3Q ######手机不能搞。 回头设置哈######我尝试一下,看上出不错,哈哈######     jfinal 早就提供了 PropKit 支持你的需求,只需要将不同的配置分类存放在不同的配置文件中,然后使用PropKit.get(...)、PropKit.use("c1.txt").get(...) 、PropKit.use("c2.txt").get(...) 分别可以从默认配置、c1.txt配置、c2.txt 中获取参数。      配置放在数据库中通常用于需要动态改变配置,并且实时生效的应用场景,通常有相应的管理界面和功能来管理。而配置放在文件中通常用于系统启动前的固定配置,无需动态改变。所以视应用场景即可。 ######谢波总出招###### #Disconf#的思路非常赞:http://www.oschina.net/p/disconf 在大规模系统中会比我们单纯的配置文件要省心得多! ######@孤独的3 以前公司一个做运维的就常常管这些,这个好像不错,下次试试。######回复 @javagoboy : 不是,就是一个配置管理平台+插件的东西! 在那个管理平台上就能修改配置文件会同步到各个节点######回复 @小99 : 他是使用的Spring,最好是有个大牛有时间按照他这个整一个JFinal版本的!配置管理平台+一个插件######我看一下。 看看适不适合我,谢啦######这怎么像是运维要用的东西?###### 我们一般是这样分的 +config     +dev         +db.properties         +redis.properties         +xxx.properties     +release         +db.properties         +redis.properties         +xxx.properties 1.配置文件会单独放在一个源代码目录中 2.dev目录存放开发配置文件 release存放正式环境配置文件 如果你们公司有专门的测试还会有test这个目录 3.dev和release中的文件名是一模一样的,配置文件的key也是一抹一样的,值是不一样的 4.项目中抽象一个配置管理类来管理配置文件的加载,其实就是对PropKit的一次封装,在JFinalConfig中决定加载dev还是release ######我不知道这部分怎么写######4.项目中抽象一个配置管理类来管理配置文件的加载,其实就是对PropKit的一次封装,在JFinalConfig中决定加载dev还是release 这个能具体说下,怎么实现好一些

kun坤 2020-05-31 17:34:22 0 浏览量 回答数 0

回答

配置管理可以分两块: 1.静态配置统一放在一个目录: res/default/ 默认配置 jdbc. properties web.properties xxx.properties res/dev 本地开发配置(dev配置会自动覆盖default配置) 作用:开发 测试 正式 可以分开管理 2.动态配置部分: 静态配置文件 一般改了之后要重新启服务,很多时候希望动态改变配置,不用重启就能生效。 1.JOB自动从DB加载对应配置项,动态改变static 配置变量值。 2.手工更新配置项。 如果觉得这个办法不错,可以采纳为答案,3Q ######手机不能搞。 回头设置哈######我尝试一下,看上出不错,哈哈######     jfinal 早就提供了 PropKit 支持你的需求,只需要将不同的配置分类存放在不同的配置文件中,然后使用PropKit.get(...)、PropKit.use("c1.txt").get(...) 、PropKit.use("c2.txt").get(...) 分别可以从默认配置、c1.txt配置、c2.txt 中获取参数。      配置放在数据库中通常用于需要动态改变配置,并且实时生效的应用场景,通常有相应的管理界面和功能来管理。而配置放在文件中通常用于系统启动前的固定配置,无需动态改变。所以视应用场景即可。 ######谢波总出招###### #Disconf#的思路非常赞:http://www.oschina.net/p/disconf 在大规模系统中会比我们单纯的配置文件要省心得多! ###### @孤独的3 以前公司一个做运维的就常常管这些,这个好像不错,下次试试。######回复 @javagoboy : 不是,就是一个配置管理平台+插件的东西! 在那个管理平台上就能修改配置文件会同步到各个节点######回复 @小99 : 他是使用的Spring,最好是有个大牛有时间按照他这个整一个JFinal版本的!配置管理平台+一个插件######我看一下。 看看适不适合我,谢啦######这怎么像是运维要用的东西?###### 我们一般是这样分的 +config     +dev         +db.properties         +redis.properties         +xxx.properties     +release         +db.properties         +redis.properties         +xxx.properties 1.配置文件会单独放在一个源代码目录中 2.dev目录存放开发配置文件 release存放正式环境配置文件 如果你们公司有专门的测试还会有test这个目录 3.dev和release中的文件名是一模一样的,配置文件的key也是一抹一样的,值是不一样的 4.项目中抽象一个配置管理类来管理配置文件的加载,其实就是对PropKit的一次封装,在JFinalConfig中决定加载dev还是release ######我不知道这部分怎么写######4.项目中抽象一个配置管理类来管理配置文件的加载,其实就是对PropKit的一次封装,在JFinalConfig中决定加载dev还是release 这个能具体说下,怎么实现好一些

kun坤 2020-06-20 13:41:54 0 浏览量 回答数 0

回答

转自:阿飞的博客 一、数据库技术选型的思考维度 我们做选型的时候首先要问: 谁选型?是负责采购的同学、 DBA 还是业务研发? 如果选型的是采购的同学,他们更注重成本,包括存储方式、网络需求等。 如果选型的是 DBA 同学,他们关心的: ① 运维成本 首先是运维成本,包括监控告警是否完善、是否有备份恢复机制、升级和迁移的成本是否高、社区是否稳定、是否方便调优、排障是否简易等; ② 稳定性 其次,DBA会关注稳定性,包括是否支持数据多副本、服务高可用、多写多活等; ③ 性能 第三是性能,包括延迟、QPS 以及是否支持更高级的分级存储功能等; ④ 拓展性 第四是扩展性,如果业务的需求不确定,是否容易横向扩展和纵向扩容; ⑤ 安全 最后是安全,需要符合审计要求,不容易出现 SQL 注入或拖库情况。 ⑥ 其他 除了采购和 DBA之外,后台应用研发的同学同样会关注稳定性、性能、扩展性等问题,同时也非常关注数据库接口是否便于开发,是否便于修改数据库 schema 等问题。 接下来我们来看一下爱奇艺使用的数据库类型: MySQL,互联网业务必备系统; TiDB,爱奇艺的 TiDB 实践会有另外的具体介绍; Redis,KV 数据库,互联网公司标配; Couchbase,这个在爱奇艺用得比较多,但国内互联网公司用得比较少,接下来的部分会详细说明; 其他,比如 MongoDB、图数据库、自研 KV 数据库 HiKV 等; 大数据分析相关系统,比如 Hive、Impala 等等。 可以看到爱奇艺的数据库种类还是很多的,这会造成业务开发的同学可能不太清楚在他的业务场景下应该选用哪种数据库系统。 那么,我们先对这些数据库按照接口(SQL、NoSQL)和面向的业务场景(OLTP、OLAP)这两位维度进行一个简单非严谨的分类。 下图中,左上角是面向 OLTP、支持 SQL 的这样一类系统,例如 MySQL,一般支持事务不同的隔离级别, QPS 要求比较高,延时比较低,主要用于交易信息和关键数据的存储,比如订单、VIP 信息等。 左下角是 NoSQL 数据库,是一类针对特殊场景做优化的系统,schema 一般比较简单,吞吐量较高、延迟较低,一般用作缓存或者 KV 数据库。 整个右侧都是 OLAP 的大数据分析系统,包括 Clickhouse、Impala等,一般支持SQL、不支持事务,扩展性比较好,可以通过加机器增加数据的存储量,响应延迟较长。 还有一类数据库是比较中立的,在数据量比较小的时候性能比较好,在数据量较大或复杂查询的时候性能也不差,一般通过不同的存储引擎和查询引擎来满足不同的业务需求,我们把它叫做 HTAP,TiDB 就是这样一种数据库。 二、iQIYI对数据库的优化与完善 前面我们提到了很多种的数据库,那么接下来就和大家介绍一下在爱奇艺我们是怎么使用这些数据库的。 1、MySQL在爱奇艺的使用 ① MySQL 首先是 MySQL。MySQL 基本使用方式是 master-slave + 半同步,支持每周全备+每日增量备份。我们做了一些基本功能的增强,首先是增强了数据恢复工具 Xtrabackup 的性能。 之前遇到一个情况,我们有一个全量库是 300G 数据,增量库每天 70G 数据,总数据量 700G 左右。我们当时只需要恢复一个表的数据,但该工具不支持单表恢复,且整库恢复需要 5 个小时。 针对这个情况我们具体排查了原因,发现在数据恢复的过程中需要进行多次写盘的 IO 操作并且有很多串行操作,所以我们做了一些优化。例如删减过程中的一些写盘操作,减少落盘并将数据处理并行化,优化后整库恢复耗时减少到 100 分钟,而且可以直接恢复单表数据。 然后是适配 DDL 和 DML 工具到内部系统,gh-ostt 和 oak-online-alter-table 在数据量大的时候会造成 master-slave 延时,所以我们在使用工具的时候也增加了延时上的考虑,实时探测Master-Slave 库之间延时的情况,如果延时较大会暂停工具的使用,恢复到正常水平再继续。 ② MySQL高可用 第二是 MySQL 高可用。Master-slave 加上半同步这种高可用方式不太完善,所以我们参照了 MHA 并进行了改动,采用 master + agent 的方式。Agent 在每一个物理机上部署,可以监控这个物理机上的所有实例的状态,周期性地向 master 发送心跳,Master 会实时监测各个Agent的状态。 如果 MySQL故障,会启动 Binlog 补偿机制,并切换访问域名完成 failover。考虑到数据库跨机房跨地区部署的情况,MHA 的 master 我们也做了高可用设计,众多 master 会通过 raft 组成一个 raft group,类似 TiDB 的 PD 模块。目前 MySQL failover 策略支持三种方式:同机房、同地域跨机房以及跨地域。 ③ MySQL拓展能力 第三是提高MySQL扩展能力,以提供更大容量的数据存储。扩展方式有 SDK,例如开源的 ShardingSphere,在爱奇艺的使用也比较广泛。另外就是 Proxy,开源的就更多了。但是 SDK 和 Proxy 使用的问题是支持的 SQL 语句简单,扩容难度大,依赖较多且运维复杂,所以部分业务已经迁移至 TiDB。 ④ 审计 第四是审计。我们在 MySQL 上做了一个插件获取全量 SQL 操作,后端打到 Kafka,下游再接入包括 Clickhouse 等目标端进行 SQL 统计分析。除此之外还有安全策略,包括主动探索是否有 SQL 注入及是否存在拖库情况等,并触发对应的告警。 MySQL 审计插件最大的问题是如何降低对 MySQL 性能的影响,对此我们进行了一些测试,发现使用 General Log 对性能损耗较大,有 10%~20% 的降低。 于是我们通过接口来获取 MySQL 插件里的监控项,再把监控项放到 buffer 里边,用两级的 RingBuffer 来保证数据的写入不会有锁资源竞争。在这个插件里再启动一个线程,从 RingBuffer 里读取数据并把数据打包写到 FIFO 管道里。 我们在每台 MySQL 的物理机里再启动一个 Agent,从管道里阻塞地读取数据发至 Kafka。优化后我们再次进行压测,在每台机器上有 15 万的更新、删除或插入操作下不会丢失数据,性能损耗一般情况下小于 2%。 目前已经在公司内部的集群上线了一年时间,运行比较稳定,上线和下线对业务没有影响。 ⑤ 分级存储 第五是分级存储。MySQL 里会存一些过程性的数据,即只需要读写最近一段时间存入的数据,过段时间这些数据就不需要了,需要进行定时清理。 分级存储就是在 MySQL 之上又用了其他存储方式,例如 TiDB 或其他 TokuDB,两者之间可以进行数据自动搬迁和自动归档,同时前端通过 SDK + Proxy 来做统一的访问入口。这样一来,业务的开发同学只需要将数据存入 MySQL 里,读取时可能从后端接入的任意数据库读出。这种方式目前只是过渡使用,之后会根据 TiDB 的特性进行逐步迁移。 Redis在爱奇艺的使用 接下来是 Redis。Redis 也是使用 master - slave 这种方式,由于网络的复杂性我们对 Sentinel 的部署进行了一些特殊配置,在多机房的情况下每个机房配置一定数量 Sentinel 来避免脑裂。 备份恢复方面介绍一个我们的特殊场景,虽然 Redis 是一个缓存,但我们发现不少的业务同学会把它当做一个 KVDB 来使用,在某些情况下会造成数据的丢失。 所以我们做了一个 Redis 实时备份功能,启动一个进程伪装成 Redis 的 Slave 实时获取数据,再放到后端的 KV 存储里,例如 ScyllaDB,如果要恢复就可以从 ScyllaDB 里把数据拉出来。 我们在用 Redis 时最大的痛点就是它对网络的延迟或抖动非常敏感。如有抖动造成 Redis Master 超时,会由 Sentinel 重新选出一个新的节点成为 Master,再把该节点上的数据同步到所有 Slave 上,此过程中数据会放在 Master 节点的 Buffer 里,如果写入的 QPS 很高会造成 Buffer 满溢。如果 Buffer 满后 RDB 文件还没有拷贝过去,重建过程就会失败。 基于这种情况,我们对 Redis 告警做了自动化优化,如有大量 master - slave 重建失败,我们会动态调整一些参数,例如把 Buffer 临时调大等, 此外我们还做了 Redis 集群的自动扩缩容功能。 我们在做 Redis 开发时如果是 Java 语言都会用到 Jedis。用 Jedis 访问客户端分片的 Redis 集群,如果某个分片发生了故障或者 failover,Jedis 就会对所有后端的分片重建连接。如果某一分片发生问题,整个 Redis 的访问性能和 QPS 会大幅降低。针对这个情况我们优化了 Jedis,如果某个分片发生故障,就只针对这个分片进行重建。 在业务访问 Redis 时我们会对 Master 绑定一个读写域名,多个从库绑定读域名。但如果我们进行 Master failover,会将读写域名从某旧 Master 解绑,再绑定到新 Master 节点上。 DNS 本身有一个超时时间,所以数据库做完 failover 后业务程序里没有立刻获取到新的 Master 节点的 IP的话,有可能还会连到原来的机器上,造成访问失败。 我们的解决方法是把 DNS 的 TTL 缩短,但对 DNS 服务又会造成很大的压力,所以我们在 SDK 上提供 Redis 的名字服务 RNS,RNS 从 Sentinel 里获取集群的拓扑和拓扑的变化情况,如果集群 failover,Sentinel 会接到通知,客户端就可以通过 RNS 来获取新的 Master 节点的 IP 地址。我们去掉域名,通过 IP 地址来访问整个集群,屏蔽了 DNS 的超时,缩短了故障的恢复时间。 SDK 上还做了一些功能,例如 Load Balance 以及故障检测,比如某个节点延时较高的话会被临时熔断等。 客户端分片的方式会造成 Redis 的扩容非常痛苦,如果客户端已经进行了一定量的分片,之后再增加就会非常艰难。 Redis 在 3.0 版本后会提供 Redis Cluster,因为功能受限在爱奇艺应用的不是很多,例如不支持显示跨 DC 部署和访问,读写只在主库上等。 我们某些业务场景下会使用 Redis 集群,例如数据库访问只发生在本 DC,我们会在 DC 内部进行 Cluster 部署。 但有些业务在使用的过程中还是想做 failover,如果集群故障可以切换到其他集群。根据这种情况我们做了一个 Proxy,读写都通过它来进行。写入数据时 Proxy 会做一个旁路,把新增的数据写在 Kafka 里,后台启用同步程序再把 Kafka 里的数据同步到其他集群,但存在一些限制,比如我们没有做冲突检测,所以集群间数据需要业务的同学做单元化。线上环境的Redis Cluster 集群间场景跨 DC 同步 需要 50 毫秒左右的时间。 2、Couchbase在爱奇艺的使用 Redis 虽然提供 Cluster 这种部署方式,但存在一些问题。所以数据量较大的时候(经验是 160G),就不推荐 Redis 了,而是采用另一种存储方式 Couchbase。 Couchbase 在国内互联网公司用的比较少,一开始我们是把他当做一个 Memcached 来使用的,即纯粹的缓存系统。 但其实它性能还是比较强大的,是一个分布式高性能的 KV 系统,支持多种存储引擎 (bucket)。第一种是 Memcached bucket,使用方式和 Memcached 一样为 KV 存储,不支持数据持久化也没有数据副本,如果节点故障会丢失数据; 第二种是 Couchbase bucket,支持数据持久化,使用 Json 写入,有副本,我们一般会在线上配置两个副本,如果新加节点会对数据进行 rebalance,爱奇艺使用的一般是 Couchbase bucket 这种配置。 Couchbase 数据的分布如下图,数据写入时在客户端上会先进行一次哈希运算,运算完后会定位 Key 在哪一个 vBucket (相当于数据库里的某个分片)。之后客户端会根据 Cluster Map 发送信息至对应的服务端,客户端的 Cluster Map 保存的是 vBucket 和服务器的映射关系,在服务端数据迁移的过程中客户端的 Cluster Map 映射关系会动态更新,因此客户端对于服务端的 failover 操作不需要做特殊处理,但可能在 rebalance 过程中会有短暂的超时,导致的告警对业务影响不大。 Couchbase 在爱奇艺应用比较早,2012 年还没有 Redis Cluster 的时候就开始使用了。集群管理使用 erlang 语言开发,最大功能是进行集群间的复制,提供多种复制方式:单向、双向、星型、环式、链式等。 爱奇艺从最初的 1.8 版本使用到如今的 5.0 版本,正在调研的 6.0,中间也遇到了很多坑,例如 NTP 时间配置出错会导致崩溃,如果每个集群对外 XDCR 并发过高导致不稳定,同步方向变更会导致数据丢失等等,我们通过运维和一些外部工具来进行规避。 Couchbase 的集群是独立集群,集群间的数据同步通过 XDCR,我们一般配置为双向同步。对于业务来说,如果 Cluster 1 写入, Cluster 2 不写入,正常情况下客户端会写 Cluster 1。如果 Cluster 1 有故障,我们提供了一个 Java SDK,可以在配置中心把写入更改到 Cluster 2,把原来到 Cluster 1 的连接逐步断掉再与Cluster 2 新建连接。这种集群 failover 的过程对于客户端来说是相对透明和无感的。 3、爱奇艺自研数据库HiKV的使用 Couchbase 虽然性能非常高,并且数据的存储可以超过内存。但是,如果数据量超过内存 75% 这个阈值,性能就会下降地特别快。在爱奇艺,我们会把数据量控制在可用内存的范围之内,当做内存数据库使用。但是它的成本非常高,所以我们后面又开发了一个新的数据库—— HiKV。 开发 HiKV 的目的是为了把一些对性能要求没那么高的 Couchbase 应用迁移到 HiKV 上。HiKV 基于开源系统 ScyllaDB,主要使用了其分布式数据库的管理功能,增加了单机存储引擎 HiKV。 ScyllaDB 比较吸引人的是它宣称性能高于 Cassandra 十倍,又完全兼容 Cassandra 接口,设计基本一致,可以视为 C++ 版 Cassandra 系统。 ScyllaDB 性能的提升主要是使用了一些新的技术框架,例如 C++ 异步框架 seastar,主要原理是在j每台物理机的核上会 attach 一个应用线程,每个核上有自己独立的内存、网络、IO 资源,核与核之间没有数据共享但可以通信,其最大的好处是内存访问无锁,没有冲突过程。 当一个数据读或写到达 ScyllaDB 的 server 时,会按照哈希算法来判断请求的 Key 是否是该线程需要处理的,如果是则本线程处理,否则会转发到对应线程上去。 除此之外,它还支持多副本、多数据中心、多写多活,功能比较强大。 在爱奇艺,我们基于 SSD 做了一个 KV 存储引擎。Key 放在内存里,Value 放在盘上的文件里,我们在读和写文件时,只需要在内存索引里定位,再进行一次盘的 IO 开销就可以把数据读出来,相比 ScyllaDB 原本基于 LSM Tree 的存储引擎方式对 IO 的开销较少。 索引数据全部放在内存中,如果索引长度较长会限制单机可存储的数据量,于是我们通过开发定长的内存分布器,对于比较长的 Key 做摘要缩短长度至 20 字节,采用红黑树索引,限制每条记录在内存里的索引长度至为 64 字节。内存数据要定期做 checkpoint,客户端要做限流、熔断等。 HiKV 目前在爱奇艺应用范围比较大,截至目前已经替换了 30% 的 Couchbase,有效地降低了存储成本。 4、爱奇艺的数据库运维管理 爱奇艺数据库种类较多,如何高效地运维和管理这些数据库也是经历了不同的阶段。 最初我们通过 DBA 写脚本的方式管理,如果脚本出问题就找 DBA,导致了 DBA 特别忙碌。 第二个阶段我们考虑让大家自己去查问题的答案,于是在内部构建了一个私有云,通过 Web 的方式展示数据库运行状态,让业务的同学可以自己去申请集群,一些简单的操作也可以通过自服务平台实现,解放了 DBA。一些需要人工处理的大型运维操作经常会造成一些人为故障,敲错参数造成数据丢失等。 于是在第三个阶段我们把运维操作 Web 化,通过网页点击可以进行 90% 的操作。 第四个阶段让经验丰富的 DBA 把自身经验变成一些工具,比如有业务同学说 MySQL master-slave 延时了,DBA 会通过一系列操作排查问题。现在我们把这些操作串起来形成一套工具,出问题时业务的同学可以自己通过网页上的一键诊断工具去排查,自助进行处理。 除此之外我们还会定期做预警检查,对业务集群里潜在的问题进行预警报告;开发智能客服,回答问题;通过监控的数据对实例打标签,进行削峰填谷地智能调度,提高资源利用率。 三、不同场景下数据库选型建议 1、实用数据库选型树 最后来说一些具体数据库选型建议。这是 DBA 和业务一起,通过经验得出来的一些结论。 对于关系型数据库的选型来说,可以从数据量和扩展性两个维度考虑,再根据数据库有没有冷备、要不要使用 Toku 存储引擎,要不要使用 Proxy 等等进行抉择。 NoSQL 也是什么情况下使用 master-slave,什么情况下使用客户端分片、集群、Couchbase、HiKV 等,我们内部自服务平台上都有这个选型树信息。 2、一些思考 ① 需求 我们在选型时先思考需求,判断需求是否真实。 你可以从数据量、QPS、延时等方面考虑需求,但这些都是真实需求吗?是否可以通过其他方式把这个需求消耗掉,例如在数据量大的情况下可以先做数据编码或者压缩,数据量可能就降下来了。 不要把所有需求都推到数据库层面,它其实是一个兜底的系统。 ② 选择 第二个思考的点是对于某个数据库系统或是某个技术选型我们应该考虑什么?是因为热门吗?还是因为技术上比较先进?但是不是能真正地解决你的问题?如果你数据量不是很大的话就不需要选择可以存储大数据量的系统。 ③ 放弃 第三是放弃,当你放弃一个系统时真的是因为不好用吗?还是没有用好?放弃一个东西很难,但在放弃时最好有一个充分的理由,包括实测的结果。 ④ 自研 第四是自研,在需要自己开发数据库时可以参考和使用一些成熟的产品,但不要盲目自研。 ⑤ 开源 最后是开源,要有拥抱开源的态度。

茶什i 2019-12-27 14:17:56 0 浏览量 回答数 0

问题

阿里云服务器 如何处理网站高并发流量问题?(含教程)

元芳啊 2019-12-01 21:54:35 1511 浏览量 回答数 1

问题

MaxCompute常见问题:MaxCompute 其他使用问题

行者武松 2019-12-01 22:09:48 1989 浏览量 回答数 1

回答

你再等久一点看看,是不是查询的时候卡住了,导致查询还在继续,所以没往下?等了差不多2分钟还是在那一句上卡住不动我以前也遇到过有可能是锁库了如果是锁库的话怎么处理比较好呢,我也怀疑是数据库的设置问题,专门把更换了数据库的主机,但还是出现同样的问题<!--其他配置--><!--初始化时获取三个连接,取值应在minPoolSize与maxPoolSize之间。Default:3--><propertyname="initialPoolSize"value="3"/><!--连接池中保留的最小连接数。Default:3--><propertyname="minPoolSize"value="3"/><!--连接池中保留的最大连接数。Default:15--><propertyname="maxPoolSize"value="5"/><!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default:3--><propertyname="acquireIncrement"value="3"/><!--控制数据源内加载的PreparedStatements数量。如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 0--><propertyname="maxStatements"value="8"/><!--maxStatementsPerConnection定义了连接池内单个连接所拥有的最大缓存statements数。Default: 0--><propertyname="maxStatementsPerConnection"value="5"/><!--最大空闲时间,1800秒内未使用则连接被丢弃。若为0则永不丢弃。Default:0--><propertyname="maxIdleTime"value="1800"/>我删除了一段配置文件,这个问题就解决了但是我不知道原因,麻烦有人能帮忙解释一下时为什么吗?

爱吃鱼的程序员 2020-06-08 20:16:35 0 浏览量 回答数 0

问题

程序员报错QA大分享(1)

问问小秘 2020-06-18 15:46:14 8 浏览量 回答数 1

回答

我自己没配环境,用的云市场的wordpress博客镜像,这种问题又不是一天一次,是几天十几天个把月甚至不知道间隔多久时间无规律地出现一次,论坛里一搜一大把,好多这问题,我同一台ECS,装了一个wordpress和一个discuz,discuz则从来不会出现这种情况,discuz比WordPress的缓存功能发达,对数据库操作次数较小,都是wordpress不定时挂掉,重启下服务器就好了 ------------------------- 回 1楼(ivmmff) 的帖子 反正这次阿里云ECS初始配置磁盘从20G提升到40G以来,我的wordpress一直都没再出现数据库连接错误,我看这次多久会再出现,如果一年都不再出现,就几乎可以肯定阿里云优化了磁盘并发连接数,因为之前wordpress最长是一两个月就会出现一次数据库连接错误 ------------------------- 回 9楼(碧血微剑) 的帖子 稳定是王道啊,真心希望阿里云能多从稳定角度考虑 ------------------------- 回 11楼(ivmmff) 的帖子 应该不是,以前就算新装wordpress都有一定几率出现数据库连接错误,但现在应该成为过去式了,我觉得阿里云肯定优化过了,因为不管怎么说,新装的wordpress什么插件都没用,访问量也就站长自己,怎么也不应该出现这种影响稳定性的问题,而且一旦数据库连接错误,如果不手动重启相关服务,网站就基本死了,所以以前我经常担心哪一天就出现访问不了的问题 但这次我亲身经历了出现数据库连接错误,大概不到10秒,就给自动恢复了,不需要站长手动重启相关服务,也就不必担心网站会挂掉了 ------------------------- 回 13楼(ivmmff) 的帖子 全站缓存我没用,就是有个opcache缓存(镜像自带的),因为全站缓存会影响登录站点用户使用,所以还是动态为好,如果没有开放站内注册,是可以用全站缓存,网页全部缓存成静态页面 其实缓不缓存是站长自己的事,但wordpress默认是没有缓存的,而且缓存不适合那些开放注册的wordpress站点,所以阿里云针对wordpress优化,避免网站数据库挂掉,是非常必要的,现在我省很多心了,不用担心网站哪天挂掉 ------------------------- 回 15楼(ivmmff) 的帖子 暂时还稳定,访问的人数很平均,一般是1-2分钟来一个访客,同时在线的人数很少很少 我觉得现在稳定性比较放心了 ------------------------- 回 17楼(ivmmff) 的帖子 wordpress已经又稳定运行几个月了,看来网站是比较稳定了,不会再出现数据库挂掉的情况,目前考虑ECS续费时选择包年(包年有打折优惠,之前一直担心不稳定所以没有选择包年,而是一个月一个月续费,看现在这个态势,ECS是非常稳定了,所以打算包年省点钱) ------------------------- 回 20楼(ivmmff) 的帖子 mysql不是自己就有缓存机制吗,wordpress还有缓存数据库方面的插件或方法吗 ------------------------- 回 22楼(ivmmff) 的帖子 貌似都是静态化缓存,对我用处不大,因为我网站是需要登录会员的,需要动态内容,要是能缓存动态内容就好了 ------------------------- 回 24楼(ivmmff) 的帖子 wordpress和discuz都有,不过主要是wordpress速度相对慢很多,主要是想给wordpress加速 ------------------------- 出现数据库连接错误必须手动重启服务器或重启数据库服务,否则网站一直处于无法访问的状态,今天早上的用户全部流失了,还期待早上起来有没有人在网站上付款了(我开通了支付宝即时到账,网站会员可以打款给我阅读博客),结果没看到旺旺有消息有人付款,再一打开网站,网站数据库连接错误,访问不了了,重启数据库才又正常,损失了大概7小时的用户访问 ------------------------- 回 29楼(ivmmff) 的帖子 解决了,是我wordpress一个插件的问题,现在ECS速度还是很不错的,我说嘛,半年了都没问题,最近怎么会突然出现问题呢,原来是我一个插件的BUG,解决就不会再出现网站越来越慢直到卡死,现在网站速度相当稳定

一如繁星 2019-12-02 02:04:07 0 浏览量 回答数 0

问题

为什么要分库分表(设计高并发系统的时候,数据库层面该如何设计)?【Java问答】41期

剑曼红尘 2020-06-19 13:47:21 0 浏览量 回答数 0

问题

中电云集“云主机助手”工具使用教程

chinaccnet 2019-12-01 21:38:22 41358 浏览量 回答数 22

问题

【阿里云产品评测】个人WP站的云体验

cnsjw 2019-12-01 20:54:27 22207 浏览量 回答数 25

回答

请在my.cnf下配置 [mysqld]max_allowed_packet=100M 重启mysql 回复 @码上中国博客:将my.default.init复制重命名为my.init,再修改,最后重启下mysql回复 @码上中国博客:这个要自己创建的5.7的MySQL没有这个init文件,只有my.default.init我修改了这个init文件后重启,不管用,再次查看那个值得大小还是不变,按照网上的命令执行后重启了还是不行另外数据库最好不要存储blob、txt之类的大字段,查询分页不是只有blob大对象会有这种问题吗,怎么text也有这种问题了,我用了一个longtext还pgsql吧。一劳永逸用pg管理爬取到的大量网页、图片、pdf毫无压力回复 @554330833a:不是mysql不可以,感觉应该是它不是为这类场景设计的,默认设置比较保守吧。为什么pg可以mysql不可以呢 引用来自“mark35”的评论还pgsql吧。一劳永逸有时是程序设计问题(不适合的场景),后时候是配置问题,虽然基本都能解决,但mysql这些需要耗费时间精力成本的小问题太多。不如要么上商业db要么上免费的pgsql,彻底没这些细节魔鬼 楼主是通过setglobal语句改的max_allowed_packet?然后又用了连接池吧。 另外对于mysql的配置文件,使用命令mysql--help看他的配置文件加载顺序,选其中一个(没有就创建)即可。

爱吃鱼的程序员 2020-06-09 15:46:22 0 浏览量 回答数 0

回答

代码看着很蛋疼,编辑一下,使用工具栏的 # 插入代码,才能有语法高亮 ######确实很蛋疼,整理了一下。这样好看多了。。。######不知道我有没有理解楼主的意思 引用“取个数据存个数据都得复制张贴字段好辛苦” 意思是getXXX setXXX 这样比较轻松吗, 那写javabean不辛苦吗,有人说可以自动生成 get set,还有人说可以自动生成Bean。 那同样JFinal的Model你也可以改造一下实现同样的功能。 需要复制张贴字段: 1.DB设计的不是很合理,名字长,并且生涩难记,才会出现这种情况 2.开发不用心,不熟悉表结构######回复 @LICHUAN :我们公司很多表都是在30个字段以上,然后其中还有某些表预留字段就有几十个,但是常用的就那么几个。######呵呵,在开发初期在db设计的表结构,可能你记忆真的好,一下子就记住了字段名。还有,现在一个人从设计表结构到所有都做完成的一个项目真心很小,只能代表jfinal适合一个人玩小项目,数据库什么的不复杂。######之前用Hibernate就非常讨厌写Bean和给Bean加注解######软件里面的东西只要数量级变大都会变得很麻烦,不可能每个表都是45个字段,并且每个字段都有用吧,当出现几十个字段的时候是不是应该从模型的角度也斟酌一下?###### 虽然公司项目基本都是jfinal,但是有个遗留的ssh项目,现在每次加个字段都被hibernater搞的我想死。。。各种忘记加,忘记配置。 ######回复 @LICHUAN : javaBean是依赖数据库设计的。注解比xml优秀,编写代码无需来回关注xml。但是jfinal自动创建javabean/orm的方式,比注解优秀。jfinal自动创建,创建的不仅仅是orm,还有setter/getter。维护更改数据库字段时候,双击的时间远比你找注解改注解的时间要快。当然,你也可以试试实现orm和自动生成getter/setter。哈哈哈哈哈######回复 @LICHUAN : 当你能不用写注解与setter getter以后,你会发现注解也很不爽,试用一下 jfinal activerecord两三天时间,将彻底改变你现在的想法######。。。相对来说,你还没玩过hibernate的hbm。xml时代呵,个人觉得注解形式javabean映射是最简单高效的orm框架设计了,没有之一。######回复 @Jieven : 抱歉,我说的是4-5个字段,没有那么夸张到40-50个字段的表结构。 话说我真不敢苟同你的意见,一个javabean配置一个表结构,使用getset方法访问的好处是在写代码的时候直接调用getset函数就能够方便的操作表字段,而不需要记住表结构字段名称。 而这个好处在刚开始写项目的速度优势是显而易见的。还有一个好处是可以随时调整表结构,而不需要写了一般发现某些字段得调整,而当这个表结构使用jfina的set(“key","value")分散在各处的时候,你会发现,悲剧了,每个都得改。 ###### 回楼上的楼上,我现在使用jfinal的Model就是这样改造来用的,将就着用吧: public String getName() { return get("name"); } public void setName(String name) { set("name", name); }###### 不知道他们大公司实际是怎么做的 你可以咨询下@绝望的八皮 或者 @JFinal  个人是参照的 jfinal blog 里面的,用起来也很爽! ###### 引用来自“孤独的3”的答案 不知道他们大公司实际是怎么做的 你可以咨询下@绝望的八皮 或者 @JFinal  个人是参照的 jfinal blog 里面的,用起来也很爽! 其他用起来还是蛮爽的,就是对这个Model组件挺纠结的。赶脚这种去对象化的DB设计对于多人合作或者数据表复杂点就难以使用了。 ######大公司,不一定牛B,技术也不一定先进,我们公司500人不知道算什么公司,还在用HashVO 来获取数据,如果这个到时候改表结构,不知道有多少人要跳楼,但是实际上几乎没改过表结构######     用 jfinal model 一到两天就知道好处了,对于web项目来说数据是非常关键的,所以对数据库表结构要非常地清楚,至于字段记忆的问题,可以通过 desc tableName得到表结构,然后放在model最前面的注释里面,随时可以查看。     用过 hibernate 两三年,jfinal 比传统 Java ORM 好用多了,不信就试试,保证你会将传统java ORM彻底扔进垃圾桶, @绝望的八皮 就是其中之一 ######支持Record ORM,支持JFinal######别的不想多说,时间会证明一切,看看是屌丝多,还是高帅富多######springrain @WhereSQL 动态查询条件的注解……###### 各位只是说jfinal record orm好啊,真的好啊,非常好啊。但是几乎都没有说到怎么个好法,怎么达到快速敏捷开发的目的。是jfinal的脑残粉么? 我也用过不少ORM框架,大概也不过xml配置,注解式,还有jfinal的sql映射方式。我就想问两种方式, 1,只写一个带注解的bean,使用getset方法访问数据。 2,还是需要写个sql或建立好表再写个空bean把相关字段放到各处使用。 两种方式哪个更方便,更便于维护? ######jfinal没有完全使用注解实现orm,没耐心看源码怪谁?我一个学jfianl2天的人,不敢说我说的都准确。但是我告诉你一点,jfinal可以自动实现orm/setter/getter/基本的jdbc。维护数据表不需要重复关注javabean的注解,不需要重复关注xml。我们有更多时间写业务。另外jfinal的mvc传参比springmvc不会出现忘记数据类型/数据字段名称等的400错误。

kun坤 2020-06-10 09:36:07 0 浏览量 回答数 0

回答

只能自己顶一下了...数据库给的连接时间应该比较短印象中H有个timeout配置参数现在在外面抓节柳龟回去再看看 atcom.lohanry.ntqreg.Reg.RegToChannel_id(Reg.java:87) 这是哪一行呢?session.createQuery()这句跟着就是说查询时候发现连接断开.  mTransaction=session.beginTransaction(); mTransaction不是local变量?<atarget='_blank'>@ajavaloser<arel='nofollow'target='_blank'>http://developer.baidu.com/wiki/index.php?title=docs/cplat/rt/java/mysql这个是百度的文档,关于数据库很简单<atarget='_blank'>@Lohanry<aclass='referer'target='_blank'>@Lohanry有相关文档链接吗,CC<atarget='_blank'>@ajavalosergoogle之类均提议是使用连接池,但是bae不支持,不知道怎么解决.回复<aclass='referer'target='_blank'>@Lohanry:担心多线程的问题貌似多余了,毕竟只有你一个人在操作,不知道是不是和你的BAE环境有关系回复<aclass='referer'target='_blank'>@ajavaloser:刚刚试了下,报的错是一样的.你的session也不是local的,贴出变量的声明我倒是找到了一个,<arel="nofollow">http://developer.baidu.com/wiki/index.php?title=docs/cplat/rt/java#Hibernate 下载示例应用sshdemo,你看看,看起来是支持连接池的,但只是spring自带的连接池,可能<spanstyle="font-family:微软雅黑,Verdana,sans-serif,宋体;font-size:14px;line-height:22px;background-color:#FFFFFF;">c3p0,proxpool这些太复杂了吧,dbcp有没有试过书上写着意思不用第三方就是自带的了.话说回来,hibernate一定需要连接池吗?看了下hibernatereference,hibernate也有内置连接池的啊,BAE总不会连这都不支持吧<atarget='_blank'>@ajavaloser刚刚搭建完数据库,试了一下,本地是可以连接的,我打算去问下BAE<atarget='_blank'>@Lohanry你现在有错也找不出来啊,所以先在本地试一下不好吗?如果这样的话,我代码是不是有地方错了,一直找不出来.对了,你有没有用本地数据库测过?如果本地没问题,就是BAE环境的问题了呗<atarget='_blank'>@Lohanry<imgsrc="/js/ke/plugins/emoticons/36.gif"alt="36"/>我已经换到了3的版本,但是错误出现了,BAE边也没有给我回复....<atarget='_blank'>@ajavaloser这个我还真给忘记了,不过要明天了,测试下.我现在在win下没有环境.回复<aclass='referer'target='_blank'>@Lohanry:对了,为什么要用ServiceRegistryBuilder?你用的hibernate4吗,BAE似乎支持hibernate3哦刚刚搭建完数据库,试了一下,本地是可以连接的,我打算去问下BAE遇到同样问题,楼主解决了吗?回复<aclass='referer'target='_blank'>@Lohanry:麻烦指导下用什么呢?官方不是支持Hibernate的嘛,再说我们有没有配置数据库连接池。。。好像是BAE的问题,无法使用连接池,后来我就没有用Hibernate,用其他的了

爱吃鱼的程序员 2020-06-22 18:29:08 0 浏览量 回答数 0

问题

荆门开诊断证明-scc

游客5k2abgdj3m2ti 2019-12-01 22:09:00 1 浏览量 回答数 0

问题

基础语言百问-Python

薯条酱 2019-12-01 20:12:27 56807 浏览量 回答数 30

回答

在开始谈我对架构本质的理解之前,先谈谈对今天技术沙龙主题的个人见解,千万级规模的网站感觉数量级是非常大的,对这个数量级我们战略上 要重 视 它 , 战术上又 要 藐 视 它。先举个例子感受一下千万级到底是什么数量级?现在很流行的优步(Uber),从媒体公布的信息看,它每天接单量平均在百万左右, 假如每天有10个小时的服务时间,平均QPS只有30左右。对于一个后台服务器,单机的平均QPS可以到达800-1000,单独看写的业务量很简单 。为什么我们又不能说轻视它?第一,我们看它的数据存储,每天一百万的话,一年数据量的规模是多少?其次,刚才说的订单量,每一个订单要推送给附近的司机、司机要并发抢单,后面业务场景的访问量往往是前者的上百倍,轻松就超过上亿级别了。 今天我想从架构的本质谈起之后,希望大家理解在做一些建构设计的时候,它的出发点以及它解决的问题是什么。 架构,刚开始的解释是我从知乎上看到的。什么是架构?有人讲, 说架构并不是一 个很 悬 乎的 东西 , 实际 上就是一个架子 , 放一些 业务 和算法,跟我们的生活中的晾衣架很像。更抽象一点,说架构其 实 是 对 我 们 重复性业务 的抽象和我 们 未来 业务 拓展的前瞻,强调过去的经验和你对整个行业的预见。 我们要想做一个架构的话需要哪些能力?我觉得最重要的是架构师一个最重要的能力就是你要有 战 略分解能力。这个怎么来看呢: 第一,你必须要有抽象的能力,抽象的能力最基本就是去重,去重在整个架构中体现在方方面面,从定义一个函数,到定义一个类,到提供的一个服务,以及模板,背后都是要去重提高可复用率。 第二, 分类能力。做软件需要做对象的解耦,要定义对象的属性和方法,做分布式系统的时候要做服务的拆分和模块化,要定义服务的接口和规范。 第三, 算法(性能),它的价值体现在提升系统的性能,所有性能的提升,最终都会落到CPU,内存,IO和网络这4大块上。 这一页PPT举了一些例子来更深入的理解常见技术背后的架构理念。 第一个例子,在分布式系统我们会做 MySQL分 库 分表,我们要从不同的库和表中读取数据,这样的抽象最直观就是使用模板,因为绝大多数SQL语义是相同的,除了路由到哪个库哪个表,如果不使用Proxy中间件,模板就是性价比最高的方法。 第二看一下加速网络的CDN,它是做速度方面的性能提升,刚才我们也提到从CPU、内存、IO、网络四个方面来考虑,CDN本质上一个是做网络智能调度优化,另一个是多级缓存优化。 第三个看一下服务化,刚才已经提到了,各个大网站转型过程中一定会做服务化,其实它就是做抽象和做服务的拆分。第四个看一下消息队列,本质上还是做分类,只不过不是两个边际清晰的类,而是把两个边际不清晰的子系统通过队列解构并且异步化。新浪微博整体架构是什么样的 接下我们看一下微博整体架构,到一定量级的系统整个架构都会变成三层,客户端包括WEB、安卓和IOS,这里就不说了。接着还都会有一个接口层, 有三个主要作用: 第一个作用,要做 安全隔离,因为前端节点都是直接和用户交互,需要防范各种恶意攻击; 第二个还充当着一个 流量控制的作用,大家知道,在2014年春节的时候,微信红包,每分钟8亿多次的请求,其实真正到它后台的请求量,只有十万左右的数量级(这里的数据可能不准),剩余的流量在接口层就被挡住了; 第三,我们看对 PC 端和移 动 端的需求不一样的,所以我们可以进行拆分。接口层之后是后台,可以看到微博后台有三大块: 一个是 平台服 务, 第二, 搜索, 第三, 大数据。到了后台的各种服务其实都是处理的数据。 像平台的业务部门,做的就是 数据存储和读 取,对搜索来说做的是 数据的 检 索,对大数据来说是做的数据的 挖掘。微博其实和淘宝是很类似 微博其实和淘宝是很类似的。一般来说,第一代架构,基本上能支撑到用户到 百万 级别,到第二代架构基本能支撑到 千万 级别都没什么问题,当业务规模到 亿级别时,需要第三代的架构。 从 LAMP 的架构到面向服 务 的架构,有几个地方是非常难的,首先不可能在第一代基础上通过简单的修修补补满足用户量快速增长的,同时线上业务又不能停, 这是我们常说的 在 飞 机上 换 引擎的 问题。前两天我有一个朋友问我,说他在内部推行服务化的时候,把一个模块服务化做完了,其他部门就是不接。我建议在做服务化的时候,首先更多是偏向业务的梳理,同时要找准一个很好的切入点,既有架构和服务化上的提升,业务方也要有收益,比如提升性能或者降低维护成本同时升级过程要平滑,建议开始从原子化服务切入,比如基础的用户服务, 基础的短消息服务,基础的推送服务。 第二,就是可 以做无状 态 服 务,后面会详细讲,还有数据量大了后需要做数据Sharding,后面会将。 第三代 架构 要解决的 问题,就是用户量和业务趋于稳步增加(相对爆发期的指数级增长),更多考虑技术框架的稳定性, 提升系统整体的性能,降低成本,还有对整个系统监控的完善和升级。 大型网站的系统架构是如何演变的 我们通过通过数据看一下它的挑战,PV是在10亿级别,QPS在百万,数据量在千亿级别。我们可用性,就是SLA要求4个9,接口响应最多不能超过150毫秒,线上所有的故障必须得在5分钟内解决完。如果说5分钟没处理呢?那会影响你年终的绩效考核。2015年微博DAU已经过亿。我们系统有上百个微服务,每周会有两次的常规上线和不限次数的紧急上线。我们的挑战都一样,就是数据量,bigger and bigger,用户体验是faster and faster,业务是more and more。互联网业务更多是产品体验驱动, 技 术 在 产 品 体验上最有效的贡献 , 就是你的性能 越来越好 。 每次降低加载一个页面的时间,都可以间接的降低这个页面上用户的流失率。微博的技术挑战和正交分解法解析架构 下面看一下 第三代的 架构 图 以及 我 们 怎么用正交分解法 阐 述。 我们可以看到我们从两个维度,横轴和纵轴可以看到。 一个 维 度 是 水平的 分层 拆分,第二从垂直的维度会做拆分。水平的维度从接口层、到服务层到数据存储层。垂直怎么拆分,会用业务架构、技术架构、监控平台、服务治理等等来处理。我相信到第二代的时候很多架构已经有了业务架构和技术架构的拆分。我们看一下, 接口层有feed、用户关系、通讯接口;服务层,SOA里有基层服务、原子服务和组合服务,在微博我们只有原子服务和组合服务。原子服务不依赖于任何其他服务,组合服务由几个原子服务和自己的业务逻辑构建而成 ,资源层负责海量数据的存储(后面例子会详细讲)。技 术框架解决 独立于 业务 的海量高并发场景下的技术难题,由众多的技术组件共同构建而成 。在接口层,微博使用JERSY框架,帮助你做参数的解析,参数的验证,序列化和反序列化;资源层,主要是缓存、DB相关的各类组件,比如Cache组件和对象库组件。监 控平台和服 务 治理 , 完成系统服务的像素级监控,对分布式系统做提前诊断、预警以及治理。包含了SLA规则的制定、服务监控、服务调用链监控、流量监控、错误异常监控、线上灰度发布上线系统、线上扩容缩容调度系统等。 下面我们讲一下常见的设计原则。 第一个,首先是系统架构三个利器: 一个, 我 们 RPC 服 务组 件 (这里不讲了), 第二个,我们 消息中 间 件 。消息中间件起的作用:可以把两个模块之间的交互异步化,其次可以把不均匀请求流量输出为匀速的输出流量,所以说消息中间件 异步化 解耦 和流量削峰的利器。 第三个是配置管理,它是 代码级灰度发布以及 保障系统降级的利器。 第二个 , 无状态 , 接口 层 最重要的就是无状 态。我们在电商网站购物,在这个过程中很多情况下是有状态的,比如我浏览了哪些商品,为什么大家又常说接口层是无状态的,其实我们把状态从接口层剥离到了数据层。像用户在电商网站购物,选了几件商品,到了哪一步,接口无状态后,状态要么放在缓存中,要么放在数据库中, 其 实 它并不是没有状 态 , 只是在 这 个 过 程中我 们 要把一些有状 态 的 东 西抽离出来 到了数据层。 第三个, 数据 层 比服 务层 更需要 设计,这是一条非常重要的经验。对于服务层来说,可以拿PHP写,明天你可以拿JAVA来写,但是如果你的数据结构开始设计不合理,将来数据结构的改变会花费你数倍的代价,老的数据格式向新的数据格式迁移会让你痛不欲生,既有工作量上的,又有数据迁移跨越的时间周期,有一些甚至需要半年以上。 第四,物理结构与逻辑结构的映射,上一张图看到两个维度切成十二个区间,每个区间代表一个技术领域,这个可以看做我们的逻辑结构。另外,不论后台还是应用层的开发团队,一般都会分几个垂直的业务组加上一个基础技术架构组,这就是从物理组织架构到逻辑的技术架构的完美的映射,精细化团队分工,有利于提高沟通协作的效率 。 第五, www .sanhao.com 的访问过程,我们这个架构图里没有涉及到的,举个例子,比如当你在浏览器输入www.sanhao网址的时候,这个请求在接口层之前发生了什么?首先会查看你本机DNS以及DNS服务,查找域名对应的IP地址,然后发送HTTP请求过去。这个请求首先会到前端的VIP地址(公网服务IP地址),VIP之后还要经过负载均衡器(Nginx服务器),之后才到你的应用接口层。在接口层之前发生了这么多事,可能有用户报一个问题的时候,你通过在接口层查日志根本发现不了问题,原因就是问题可能发生在到达接口层之前了。 第六,我们说分布式系统,它最终的瓶颈会落在哪里呢?前端时间有一个网友跟我讨论的时候,说他们的系统遇到了一个瓶颈, 查遍了CPU,内存,网络,存储,都没有问题。我说你再查一遍,因为最终你不论用上千台服务器还是上万台服务器,最终系统出瓶颈的一定会落在某一台机(可能是叶子节点也可能是核心的节点),一定落在CPU、内存、存储和网络上,最后查出来问题出在一台服务器的网卡带宽上。微博多级双机房缓存架构 接下来我们看一下微博的Feed多级缓存。我们做业务的时候,经常很少做业务分析,技术大会上的分享又都偏向技术架构。其实大家更多的日常工作是需要花费更多时间在业务优化上。这张图是统计微博的信息流前几页的访问比例,像前三页占了97%,在做缓存设计的时候,我们最多只存最近的M条数据。 这里强调的就是做系统设计 要基于用 户 的 场 景 , 越细致越好 。举了一个例子,大家都会用电商,电商在双十一会做全国范围内的活动,他们做设计的时候也会考虑场景的,一个就是购物车,我曾经跟相关开发讨论过,购物车是在双十一之前用户的访问量非常大,就是不停地往里加商品。在真正到双十一那天他不会往购物车加东西了,但是他会频繁的浏览购物车。针对这个场景,活动之前重点设计优化购物车的写场景, 活动开始后优化购物车的读场景。 你看到的微博是由哪些部分聚合而成的呢?最右边的是Feed,就是微博所有关注的人,他们的微博所组成的。微博我们会按照时间顺序把所有关注人的顺序做一个排序。随着业务的发展,除了跟时间序相关的微博还有非时间序的微博,就是会有广告的要求,增加一些广告,还有粉丝头条,就是拿钱买的,热门微博,都会插在其中。分发控制,就是说和一些推荐相关的,我推荐一些相关的好友的微博,我推荐一些你可能没有读过的微博,我推荐一些其他类型的微博。 当然对非时序的微博和分发控制微博,实际会起多个并行的程序来读取,最后同步做统一的聚合。这里稍微分享一下, 从SNS社交领域来看,国内现在做的比较好的三个信息流: 微博 是 基于弱关系的媒体信息流 ; 朋友圈是基于 强 关系的信息流 ; 另外一个做的比 较 好的就是今日 头 条 , 它并不是基于关系来构建信息流 , 而是基于 兴趣和相关性的个性化推荐 信息流 。 信息流的聚合,体现在很多很多的产品之中,除了SNS,电商里也有信息流的聚合的影子。比如搜索一个商品后出来的列表页,它的信息流基本由几部分组成:第一,打广告的;第二个,做一些推荐,热门的商品,其次,才是关键字相关的搜索结果。 信息流 开始的时候 很 简单 , 但是到后期会 发现 , 你的 这 个流 如何做控制分发 , 非常复杂, 微博在最近一两年一直在做 这样 的工作。刚才我们是从业务上分析,那么技术上怎么解决高并发,高性能的问题?微博访问量很大的时候,底层存储是用MySQL数据库,当然也会有其他的。对于查询请求量大的时候,大家知道一定有缓存,可以复用可重用的计算结果。可以看到,发一条微博,我有很多粉丝,他们都会来看我发的内容,所以 微博是最适合使用 缓 存 的系统,微博的读写比例基本在几十比一。微博使用了 双 层缓 存,上面是L1,每个L1上都是一组(包含4-6台机器),左边的框相当于一个机房,右边又是一个机房。在这个系统中L1缓存所起的作用是什么? 首先,L1 缓 存增加整个系 统 的 QPS, 其次 以低成本灵活扩容的方式 增加 系统 的 带宽 。想象一个极端场景,只有一篇博文,但是它的访问量无限增长,其实我们不需要影响L2缓存,因为它的内容存储的量小,但它就是访问量大。这种场景下,你就需要使用L1来扩容提升QPS和带宽瓶颈。另外一个场景,就是L2级缓存发生作用,比如我有一千万个用户,去访问的是一百万个用户的微博 ,这个时候,他不只是说你的吞吐量和访问带宽,就是你要缓存的博文的内容也很多了,这个时候你要考虑缓存的容量, 第二 级缓 存更多的是从容量上来 规划,保证请求以较小的比例 穿透到 后端的 数据 库 中 ,根据你的用户模型你可以估出来,到底有百分之多少的请求不能穿透到DB, 评估这个容量之后,才能更好的评估DB需要多少库,需要承担多大的访问的压力。另外,我们看双机房的话,左边一个,右边一个。 两个机房是互 为 主 备 , 或者互 为热备 。如果两个用户在不同地域,他们访问两个不同机房的时候,假设用户从IDC1过来,因为就近原理,他会访问L1,没有的话才会跑到Master,当在IDC1没找到的时候才会跑到IDC2来找。同时有用户从IDC2访问,也会有请求从L1和Master返回或者到IDC1去查找。 IDC1 和 IDC2 ,两个机房都有全量的用户数据,同时在线提供服务,但是缓存查询又遵循最近访问原理。还有哪些多级缓存的例子呢?CDN是典型的多级缓存。CDN在国内各个地区做了很多节点,比如在杭州市部署一个节点时,在机房里肯定不止一台机器,那么对于一个地区来说,只有几台服务器到源站回源,其他节点都到这几台服务器回源即可,这么看CDN至少也有两级。Local Cache+ 分布式 缓 存,这也是常见的一种策略。有一种场景,分布式缓存并不适用, 比如 单 点 资 源 的爆发性峰值流量,这个时候使用Local Cache + 分布式缓存,Local Cache 在 应用 服 务 器 上用很小的 内存资源 挡住少量的 极端峰值流量,长尾的流量仍然访问分布式缓存,这样的Hybrid缓存架构通过复用众多的应用服务器节点,降低了系统的整体成本。 我们来看一下 Feed 的存 储 架构,微博的博文主要存在MySQL中。首先来看内容表,这个比较简单,每条内容一个索引,每天建一张表,其次看索引表,一共建了两级索引。首先想象一下用户场景,大部分用户刷微博的时候,看的是他关注所有人的微博,然后按时间来排序。仔细分析发现在这个场景下, 跟一个用户的自己的相关性很小了。所以在一级索引的时候会先根据关注的用户,取他们的前条微博ID,然后聚合排序。我们在做哈希(分库分表)的时候,同时考虑了按照UID哈希和按照时间维度。很业务和时间相关性很高的,今天的热点新闻,明天就没热度了,数据的冷热非常明显,这种场景就需要按照时间维度做分表,首先冷热数据做了分离(可以对冷热数据采用不同的存储方案来降低成本),其次, 很容止控制我数据库表的爆炸。像微博如果只按照用户维度区分,那么这个用户所有数据都在一张表里,这张表就是无限增长的,时间长了查询会越来越慢。二级索引,是我们里面一个比较特殊的场景,就是我要快速找到这个人所要发布的某一时段的微博时,通过二级索引快速定位。 分布式服务追踪系统 分布式追踪服务系统,当系统到千万级以后的时候,越来越庞杂,所解决的问题更偏向稳定性,性能和监控。刚才说用户只要有一个请求过来,你可以依赖你的服务RPC1、RPC2,你会发现RPC2又依赖RPC3、RPC4。分布式服务的时候一个痛点,就是说一个请求从用户过来之后,在后台不同的机器之间不停的调用并返回。 当你发现一个问题的时候,这些日志落在不同的机器上,你也不知道问题到底出在哪儿,各个服务之间互相隔离,互相之间没有建立关联。所以导致排查问题基本没有任何手段,就是出了问题没法儿解决。 我们要解决的问题,我们刚才说日志互相隔离,我们就要把它建立联系。建立联系我们就有一个请求ID,然后结合RPC框架, 服务治理功能。假设请求从客户端过来,其中包含一个ID 101,到服务A时仍然带有ID 101,然后调用RPC1的时候也会标识这是101 ,所以需要 一个唯一的 请求 ID 标识 递归迭代的传递到每一个 相关 节点。第二个,你做的时候,你不能说每个地方都加,对业务系统来说需要一个框架来完成这个工作, 这 个框架要 对业务 系 统 是最低侵入原 则 , 用 JAVA 的 话 就可以用 AOP,要做到零侵入的原则,就是对所有相关的中间件打点,从接口层组件(HTTP Client、HTTP Server)至到服务层组件(RPC Client、RPC Server),还有数据访问中间件的,这样业务系统只需要少量的配置信息就可以实现全链路监控 。为什么要用日志?服务化以后,每个服务可以用不同的开发语言, 考虑多种开发语言的兼容性 , 内部定 义标 准化的日志 是唯一且有效的办法。最后,如何构建基于GPS导航的路况监控?我们刚才讲分布式服务追踪。分布式服务追踪能解决的问题, 如果 单一用 户发现问题 后 , 可以通 过请 求 ID 快速找到 发 生 问题 的 节 点在什么,但是并没有解决如何发现问题。我们看现实中比较容易理解的道路监控,每辆车有GPS定位,我想看北京哪儿拥堵的时候,怎么做? 第一个 , 你肯定要知道每个 车 在什么位置,它走到哪儿了。其实可以说每个车上只要有一个标识,加上每一次流动的信息,就可以看到每个车流的位置和方向。 其次如何做 监 控和 报 警,我们怎么能了解道路的流量状况和负载,并及时报警。我们要定义这条街道多宽多高,单位时间可以通行多少辆车,这就是道路的容量。有了道路容量,再有道路的实时流量,我们就可以基于实习路况做预警? 对应于 分布式系 统 的话如何构建? 第一 , 你要 定义 每个服 务节 点它的 SLA A 是多少 ?SLA可以从系统的CPU占用率、内存占用率、磁盘占用率、QPS请求数等来定义,相当于定义系统的容量。 第二个 , 统计 线 上 动态 的流量,你要知道服务的平均QPS、最低QPS和最大QPS,有了流量和容量,就可以对系统做全面的监控和报警。 刚才讲的是理论,实际情况肯定比这个复杂。微博在春节的时候做许多活动,必须保障系统稳定,理论上你只要定义容量和流量就可以。但实际远远不行,为什么?有技术的因素,有人为的因素,因为不同的开发定义的流量和容量指标有主观性,很难全局量化标准,所以真正流量来了以后,你预先评估的系统瓶颈往往不正确。实际中我们在春节前主要采取了三个措施:第一,最简单的就是有降 级 的 预 案,流量超过系统容量后,先把哪些功能砍掉,需要有明确的优先级 。第二个, 线上全链路压测,就是把现在的流量放大到我们平常流量的五倍甚至十倍(比如下线一半的服务器,缩容而不是扩容),看看系统瓶颈最先发生在哪里。我们之前有一些例子,推测系统数据库会先出现瓶颈,但是实测发现是前端的程序先遇到瓶颈。第三,搭建在线 Docker 集群 , 所有业务共享备用的 Docker集群资源,这样可以极大的避免每个业务都预留资源,但是实际上流量没有增长造成的浪费。 总结 接下来说的是如何不停的学习和提升,这里以Java语言为例,首先, 一定要 理解 JAVA;第二步,JAVA完了以后,一定要 理 解 JVM;其次,还要 理解 操作系统;再次还是要了解一下 Design Pattern,这将告诉你怎么把过去的经验抽象沉淀供将来借鉴;还要学习 TCP/IP、 分布式系 统、数据结构和算法。

hiekay 2019-12-02 01:39:25 0 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 阿里云双十一主会场 阿里云双十一新人会场 1024程序员加油包 阿里云双十一拼团会场 场景化解决方案 阿里云双十一直播大厅