提高系统性能的2个常用手段---缓存和异步

缓存

  1. 缓存 
    1.1 缓存刷新机制,缓存刷新是指什么时候把数据库中的数据加载到缓存 
    (1) 定期刷新; 
    (2) 缓存命中失败时刷新; 
    1.2 在有缓存时的数据写入方式: 
    (1) 同步写入,即缓存和数据库同时被写入,即在应用层进行双写操作,这种方式可以有效保证缓存和DB中数据的一致性,由于这种方式即要更新缓存同时还要更改数据库,其访问效率相对较低,适合读多写少的场景; 
    (2) 异步更新机制,在写操作时只写入缓存便返回,写数据库的操作交个另外一个异步操作来完成,这样可以加快用户请求的处理速度,进而增强整个系统的并发量,但是这种方式会造成在一定时间内缓存和数据库中的数据不一致; 
    一般情况下,同时保证数据写入缓存和数据库的事务性是非常困难的,因为这时涉及到写入数据到两种系统中,而且一般缓存不提供回滚机制,如果系统的要求不严格,则可采用一些妥协措施,以提升系统的整体访问效率。 
    1.3 缓存使用的几种方式: 
    (1) 全量缓存,是指所有的数据在缓存中都有,它不适合数据量较大、冷热访问极度不均匀的情况,这些情况下要么缓存放不下这么多数据,要么缓存中加载的都是大量不用的数据,造成缓存浪费,同时也会影响访问效率;它适合数据量小并且全部数据都会经常被访问的场景;例如,我们有一个业务是获取系统中各子服务的地址,在每个客户端上线时第一步操作就是获取各子服务的地址,然后才能进行真正的业务操作,这些服务地址信息数据量不大,但是全部都会经常被访问,因此它们需要被全量缓存,为保障缓存和数据库的一致性,我们采用双写策略,更新服务地址时要同时更新缓存和数据库; 
    (2) 只缓存热点数据,这种方式适合数据量大、冷热访问不均匀的场景,该方式涉及到数据何时被加载、何时被逐出的问题;加载时可以采用两种方式:增量方式,服务启动时不向缓存中加载任何数据,等访问时在缓存找不到再去数据库中取并将取出的结果加载到缓存中,这样随着时间的推移,热点数据将被加载到缓存中;另一种方式是减量方式,服务启动时加载全部的数据,一定时间内不被使用的数据将会被逐出,随着时间的推移冷数据都被逐出,而留下来的都是热点数据;例如:我们为一个IM系统设计账号服务子系统时,就采用只缓存热点数据的方式,并且数据加载方式采用增量方式;只缓存热点数据的方式要特别注意缓存的量,如果缓存中没有存下足够的热点数据,那么将会有一定量的请求会穿透缓存,将压力施加到数据库上; 
    1.4 架构设计时的三个层次的缓存 
    (1)对象缓存,例如Redis、Memched等,它以Key-Value的方式帮助我们缓存一些对象数据,Redis提供的Value类型更多,使用时更加方便;但是这些缓存通常不提供数据库的事务性&
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
作为一个月薪一万的后端程序员,需要掌握以下几个项目和技能: 1. 基本项目:熟悉常见的后端开发框架,如Spring、Django、Express等,可以独立完成简单的Web应用开发。 2. 数据库管理:了解关系型数据库(如MySQL、PostgreSQL)和非关系型数据库(如MongoDB、Redis)的使用和性能优化。 3. 接口开发和管理:熟悉RESTful API设计和开发,了解常用的API管理工具,如Swagger。 4. 安全性和权限控制:了解常见的安全漏洞和攻击手段,并能够使用相关技术保证系统的安全性,如加密、身份验证、访问控制等。 5. 性能优化:具备基本的性能优化意识,能够对数据库查询、接口响应等进行分析和优化。 6. 消息队列与异步处理:了解消息队列的基本概念和使用场景,掌握至少一种消息队列系统(如RabbitMQ、Kafka),并能够使用异步处理提高系统性能。 7. 缓存技术:熟悉缓存的使用,如Redis、Memcached等,能够根据业务场景合理使用缓存提升系统性能。 8. 分布式系统与微服务架构:了解分布式系统的基本原理,熟悉微服务架构的设计和开发,能够使用容器化技术如Docker进行部署。 9. 版本控制和协作工具:熟练使用Git进行代码版本控制,并了解协作工具如JIRA、Slack等的使用。 以上是一个基本的要求,实际上具体需要掌握的项目和技能可能会根据不同公司和职位要求有所不同。不过,以上列举的技能是后端程序员工作中常见且重要的技能,掌握它们可以帮助你在后端开发领域有较好的表现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值