概述
边缘计算是一种基础技术架构,可以在生产设施(设备)中现场收集、分析和存储数据,从而节省时间并帮助维护运营,而不是依赖于将所有数据存储在云中的较慢系统。
边缘计算公司不断地提供解决方案,来满足人们对边缘计算的需求,这些需求都是因像延迟、带宽、隐私和自主性这样的因素而触发的。
边缘计算发展前景:百度安全验证
边缘计算之MEC:(6条消息) 边缘计算系列之MEC介绍_就叫离离原上吧的博客-CSDN博客_mec边缘计算
二、技术
2.1 Java中利用日志
slf4j:日志门面,日志的抽象层,一层规范,日志框架按照其规范实现具体细节即可,使用时,直接通过操作门面的方式去使用日志
阿里规范:应用中不可直接使用日志系统(Log4j、Logback)中的API,而应依赖使用日志框架SLF4J中的API。使用门面模式的日志框架,有利于维护和各个类的日志处理方法统一。
实际使用:实际项目开发中,遵循阿里规范,使用SLF4J和其他日志框架相结合的方式。
一文教你如何在项目开发中使用日志_See you !的博客-CSDN博客_java项目中如何使用日志
2.2 Redis
Redis即数据库的缓存。应用程序们从MySQL查询到的数据,在Redis这里登记一下,后面再需要用到的时候,就先找Redis要,Redis这里没有再找MySQL要。
2.2.1 Redis入几种操作
[缓存过期 && 缓存淘汰]:删除一些长时间没有被访问的数据
* noeviction:返回错误,不会删除任何键值
* allkeys-lru:使用LRU算法删除最近最少使用的键值
* volatile-lru:使用LRU算法从设置了过期时间的键集合中删除最近最少使用的键值
* allkeys-random:从所有key随机删除
* volatile-random:从设置了过期时间的键的集合中随机删除
* volatile-ttl:从设置了过期时间的键中删除剩余时间最短的键
* volatile-lfu:从配置了过期时间的键中删除使用频率最少的键
* allkeys-lfu:从所有键中删除使用频率最少的键
[缓存穿透 && 布隆过滤器]:Redis直接拒绝掉一些在MySQL中肯定无法查询到的键值
[缓存击穿 && 缓存雪崩]:一些数据过了有效期之后被Redis删除,然后大量相同数据访问,在Redis之中查找不到就直接访问到MySQL。
2.2.2 数据库与缓存的数据一致性
在进行数据的Query时候,会对数据库和缓存进行操作,这时候就会出现并发性问题,所以需要数据一致性。
重试机制和订阅 MySQL binlog,再操作缓存。
重试机制:
我们可以引入消息队列,将第二个操作(删除缓存)要操作的数据加入到消息队列,由消费者来操作数据。
如果应用删除缓存失败,可以从消息队列中重新读取数据,然后再次删除缓存,这个就是重试机制。当然,如果重试超过的一定次数,还是没有成功,我们就需要向业务层发送报错信息了。
如果删除缓存成功,就要把数据从消息队列中移除,避免重复操作,否则就继续重试。
订阅 MySQL binlog,再操作缓存:
先更新数据库,再删缓存」的策略的第一步是更新数据库,那么更新数据库成功,就会产生一条变更日志,记录在 binlog 里。
于是我们就可以通过订阅 binlog 日志,拿到具体要操作的数据,然后再执行缓存删除,阿里巴巴开源的 Canal 中间件就是基于这个实现的。
Canal 模拟 MySQL 主从复制的交互协议,把自己伪装成一个 MySQL 的从节点,向 MySQL 主节点发送 dump 请求,MySQL 收到请求后,就会开始推送 Binlog 给 Canal,Canal 解析 Binlog 字节流之后,转换为便于读取的结构化数据,供下游程序订阅使用。
所以,如果要想保证「先更新数据库,再删缓存」策略第二个操作能执行成功,我们可以使用「消息队列来重试缓存的删除」,或者「订阅 MySQL binlog 再操作缓存」,这两种方法有一个共同的特点,都是采用异步操作缓存。
2.2.3 Redis持久化
RDB持久化和AOF持久化两种方式
2.2.4 Redis-api
redis详解(全)_Ferao的博客-CSDN博客_redis
2.3 Java中的集合操作
最后
以上就是悦耳宝贝为你收集整理的边缘计算从入门到放弃二、技术 的全部内容,希望文章能够帮你解决边缘计算从入门到放弃二、技术 所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复