一、弹性伸缩服务是否可以任意使用?
用户在咨询弹性伸缩服务时,觉得该产品挺好,但一经解释,发现不能用(软件架构不支持)。原因是,使用该产品,需要做到“应用无状态化”。
举个例子,如果因为业务访问下降,需要由云管平台强制将某云主机下线,正在使用该云主机的用户的session数据如果放在了该服务器上,则用户被会踢下线。而如果session数据放到了共享数据库中,就算云主机被赐下线,而用户业务影响也非常短暂,甚至感知不到。
用户数据未存放到云主机的行为,称为“应用无状态化”。
二、应用服务器是否按功能拆分得越细越好?
用户在咨询,是否有必要一步到位,将不同的业务放置到不同的服务器中。其实,我们没有必要为了技术先进而先进。如果预估业务系统用户量/交易量不会特别大,没有必要对系统过分拆分,甚至一台服务器解决所有问题也挺好。
而如果是面向互联网的普遍服务,建议前期在软件架构设计一定有一些提前量。服务器的拆分维度有:
1、系统维度:比如商品展示、购物车、结算、订单等。
2、功能维度:对某一个系统再拆分。比如优惠券系统可拆为创券、领券、用券。
3、读写维度:比如,商品系统,交易读、交易写。且交易写的io、bw预估高于交易读,因此将交易写的服务器能力需考虑得更高一些。且读服务可用缓存提升性能;而写需要考虑分库分表,一般不到极端情况不建议使用分布式数据库。
三、Redis、Memcached产品在项目上一般有什么用?
典型的Nosql数据库,Key-Value型的数据存储,且一般为内存计算,很少将数据写到磁盘中。我们举一个例子来说明用途。
在11.11、12.12电商日中,如果用户在某个时点秒杀商品,此时通过数据库进行商品的查询、扣减是不可取的。一般是将商品数据缓存到了Redis中,再通过同步至DB数据库中。
但此时有个风险,Redis、DB数据库可能存在最终效验不一致的情况。这时侯需要通过另外的效验程序进行日志的自动对比分析。
四、天翼云提供哪些产品解决大流量业务访问?
1、广域网角度主要是CDN,解决静态数据的缓存,以及动态数据的路由优化。
2、云资源池内可提供弹性伸缩 Ngnix的反向代理服务,用于解决资源池内的缓存加速。Ngnix需自行部署。
3、负载均衡服务,不再详细,主要解决某项基于ip的服务。
4、Redis,解决某数据库的压力。
五、对于大业务流量的金融级访问,有什么优化处理办法?
一般为限级、限流。
1、例如,集中期货交易系统,优先保障下单、支付的功能,最终保证与数据库的一致性即可。而将一些查询类等服务的业务处理效率强制降低,优先保障支持等服务性能。
2、限流。在Ngnix等服务器中,增加cache的缓存时间,并对恶意ip段进行deny拒绝。对需穿透到真实服务器的业务流量,通过limit模块处理,并优先保障重要客户的访问。
六、希望运营商提供应用级的双活,有什么设备的投入?
课题很大,分两个层面。
1、应用访问流量的高可靠。对于域名访问型业务,需增加gslb设备。对于ip型访问,需要两个数据中心支持bgp的健康路由机制。
2、对于数据的高可靠一致。建议针对操作系统级,直接两个数据中心部署相同的业务系统;针对数据库,建议采用原厂的日志级数据同步软件,如oracle dg。