概述
近年来互联网金融蓬勃发展,在借贷、保险、股权等领域涌现出一大批互联网与金融场景相结合的创新产品,如花呗、借呗,微粒贷等众多服务。
为满足日益剧增的用户增长和交易量,往往需要在架构设计时,考虑高性能的特性。
互联网金融高性能设计
在互联网金融分布式架构中,高性能是一项涉及众多方面因素的系统工程,并不是单一高新技术和设备的简单应用或堆叠,应该进行合理的规划与优化设计,以适合用户在性能、成本等方面对系统建设的综合需求。
1、高性能的指标
高性能的指标通常有:
通过合理的架构设计,实现互联网金融系统高吞吐、低延时(相对时间)。
可用性指标计算:平均相应时间、95线的响应时间、99线的响应时间。
提升系统的性能
互联网金融系统,涉及到各方面的性能问题,如:
- 系统软件平台服务的性能
- 网络和硬件的性能
- 数据库及存储的性能等
1、微服务化设计
将对庞大金融服务进行领域规划,将臃肿的系统进行拆分解耦,将每一个模块进行解耦,把每个服务都尽可能做成无状态化,每个独立模块均可以作为一个微服务,这样每个微服务的关联性都比较小,每一个微服务都可能做到最大化的性能。
微服务架构设计
2、CDN加速技术
互联网消费金融的产品,涉及到众多前端,使用CDN缓存技术,能大大提升用户的产品体验。
CND加速将网站的内容缓存在网络边缘(离用户接入网络最近的地方),然后在用户访问网站内容的时候,通过调度系统将用户的请求路由或者引导到离用户接入网络最近或者访问效果最佳的缓存服务器上,由该缓存服务器为用户提供内容服务;相对于直接访问源站,这种方式缩短了用户和内容之间的网络距离,从而达到加速的效果。
3、网络与硬件性能
带宽性能:足够的带宽应该满足在网站峰值的情况还能足够快速的使用,所以网络带宽应该大于峰值流量,只有在保证带宽的情况才能实现高性能服务。
- 网络带宽 = max(峰值QPS ,平均请求大小)
服务器性能:服务器性能主要从CPU、内存和磁盘三个方面来考虑
- CPU核心数量尽量多点
- 内存大小最好大一点
- 利用到磁盘存储的话SSD会优于机械磁盘
硬件负载均衡设备对于有条件的团队可以采购硬件负载均衡设备,加强后台服务负载均衡的能力,比如F5。
4、分布式缓存
在互联网金融的高并发场景,引入缓存能够大大提升系统性能,减少数据库IO请求,从而降低核心数据库的并发压力。
缓存的本质是通过Key-Value形式的Hash表提升读写速度,一般情况是O(1)的读写速度。读量比较高,变化量不大的数据比较适合使用缓存。目前比较常用的分布式缓存技术有Redis,Memcache等。缓存这块的中间件建设,后面的章节会在细化讲解。
5、操作异步化设计
目前在大型的互联网消费金融系统架构设计中,普遍会考虑用消息队列来讲调用异步化,不仅可以提升系统的性能,还可以提升系统的扩展性。
对于大量的数据库写请求,数据库的压力很大,同时也会造成数据库的响应不及时。可以引入使用消息队列机制,数据库的写请求可以直接写入到消息队列,然后通过多线程或者多进程从消息队列读取数据慢慢写入到数据库。消息队列服务器的处理速度会远远快于数据库,所以用户在写入操作时会感觉到很快写入速度。
6、代码的优化
对于IO操作的请求可以采用基于状态机的异步化编程。
处理算法的模型优化(时间复杂度和空间复杂度),对于数据结构的设计可以采用高效的数据结构,比如典型的key-value缓存系统就是基于hash的基本原理来实现的,hash表的查询效率是O(1),效率极快。
7、高性能的本地存储设计
提供更高的存储硬件,更高的吞吐量和IPOS,读写性能。合理的数据连接池和缓存。
8、数据分片设计
在互联网消费金融领域,涉及到很多账务数据的处理,引入分片技术能大大提升数据处理的性能。
比如:借贷业务涉及到的借据数据、财务数据的夜间批量处理时,利用分片技术进行处理,提供了更高的扩展性,提升了整体的性能。
数据分片
网友评论