
获得徽章 1
- #青训营笔记创作活动#
2月19日 打卡day9
跨域问题指的是不同站点之间,使用 ajax 无法相互调用的问题。跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。 但这个保护机制也带来了新的问题,它的问题是给不同站点之间的正常调用,也带来的阻碍,那怎么解决这个问题呢?接下来我们一起来看。
在请求时,如果出现了以下情况中的任意一种,那么它就是跨域请求:
协议不同,如 http 和 https;
域名不同;
端口不同。展开评论点赞 - #青训营笔记创作活动#
2月16日 打卡day8
缓存实现的时候,必须要有一种机制,能够保证内存中的数据不会无限制增加 —— 也即数据淘汰机制。数据淘汰机制,是一个成熟的缓存体系所必备的基础能力。这里有个概念需要厘清,即数据淘汰策略与数据过期是两个不同的概念。
数据过期,是缓存系统的一个正常逻辑,是符合业务预期的一种数据删除机制。即设定了有效期的缓存数据,过期之后从缓存中移除。
数据淘汰,是缓存系统的一种“有损自保”的降级策略,是业务预期之外的一种数据删除手段。指的是所存储的数据没达到过期时间,但缓存空间满了,对于新的数据想要加入缓存中时,缓存模块需要执行的一种应对策略。展开评论点赞 - #青训营笔记创作活动#
2月15日 打卡day7
Bytebase是一款面向开发者的数据库变更管理工具,目前在Github上已有3.6K+Star。
它的主要特性如下:
SQL审核:具有一站式SQL审核面板,可以直观地看到数据库所有变更记录。
SQL建议:能自动检查SQL语句规范,额外提供GitHub Action和API接入方式。
SQL编辑器:可以在线管理及查看数据库表,支持语法的自动提示。
GitOps工作流:支持集成GitHub和GitLab,使用GitOps工作流进行数据库变更。
备份恢复:支持自动备份数据库及恢复数据。展开评论点赞 - #青训营笔记创作活动#
2月13日 打卡day6
今日学习:
分库分表是在海量数据下,由于单库、表数据量过大,导致数据库性能持续下降的问题,演变出的技术方案。
分库分表是由分库和分表这两个独立概念组成的,只不过通常分库与分表的操作会同时进行,以至于我们习惯性的将它们合在一起叫做分库分表。
展开评论点赞 - #青训营笔记创作活动#
2月11日 打卡day5
今日学习:
Hertz 是一个超大规模的企业级微服务 HTTP 框架,具有高易用性、易扩展、低时延等特点。
Hertz 默认使用自研的高性能网络库 Netpoll,在一些特殊场景中,相较于 go net,Hertz 在 QPS、时延上均具有一定优势。
在内部实践中,某些典型服务,如框架占比较高的服务、网关等服务,迁移 Hertz 后相比 Gin 框架,资源使用显著减少,CPU 使用率随流量大小降低 30%—60% 。展开评论点赞 - #青训营笔记创作活动#
2月3日 打卡day4
今日学习:
Kafak由三个系统组成:1.消息系统 2.存储系统 3.流式处理平台
一个典型的 Kafka 体系架构包括若干 Producer、若干 Broker、若干 Consumer,以及一个 ZooKeeper 集群,如图所示。其中 ZooKeeper 是 Kafka 用来负责集群元数据的管理、控制器 的选举等操作的。Producer 将消息发送到 Broker,Broker 负责将收到的消息存储到磁盘中,而 Consumer 负责从 Broker 订阅并消费消息。
主题(Topic)与分区(Partion)
消费者与消费组展开评论点赞 - #青训营笔记创作活动#
1月15 打卡day03
学习内容:DDD的概念
可以用go-micro和go-zero框架进行微服务项目的实践。
## 1. 单一职责
DDD思想指导我们对业务逻辑进行拆分,明确各自边界,形成不同的领域,不同的领域对应不同的微服务,这就是单一职责。
## 2. 团队独立
不同的领域对应不同的业务团队,也对应着不同的技术团队,彼此之间是解耦的。
## 3. 技术独立
不同的领域,不同的团队可以使用不同的开发语言,各自独立,只要按规范提供服务即可。
## 4. 数据库分离
每个领域(每个服务)都拥有自己的数据源。
## 5. 独立部署
每个领域(每个服务)都是独立的组件,可复用,可替换,降低耦合,易维护,易集群Docker部署服务展开评论点赞 - #青训营笔记创作活动#
1月14日 打卡day02
学习内容:mysql在最佳性能下可以存放的数据量怎么计算?
MySql中InnoDB的存储结构是B+树,B+树的查询是从上往下一层层查询的,一般认为B+树的高度保持在3层以内是比较好2的,也就是两层索引,最后一层存放数据。
主键索引(聚集索引)和非聚集索引的区别:
聚簇索引的叶子节点一般情况下存的是这条数据的所有字段信息。
非聚簇索引的叶子节点存的是这条数据所对应的主键和索引列信息。展开评论点赞 - #青训营笔记创作活动#
1月13日 打卡day1
学习内容:在高并发场景下,应对流量高峰的常用方法有限流、熔断、降级。
根据限流作用范围,可以分为单机限流和分布式限流;根据限流方式,又分为计数器、滑动窗口、漏桶限令牌桶限流。
1.计数器:在一段时间间隔内,对请求进行计数,与阀值进行比较判断是否需要限流,一旦到了时间临界点,将计数器清零。这种方法虽然简单,但也有个大问题就是没有很好的处理单位时间的边界。
2.滑动窗口:把固定时间片进行划分,并且随着时间的流逝,进行移动,固定数量的可以移动的格子,进行计数并判断阀值。滑动窗口解决了部分计数器存在的临界点缺陷。
3.漏桶:采用漏桶算法,原理就是一个固定容量的漏桶,按照固定速率流出水滴。漏桶限制的是常量流出速率(即流出速率是一个固定常量值),所以最大的速率就是出水的速率,不能出现突发流量。
4.令牌桶:采用令牌桶算法,用来控制发送到网络上的数据的数目,并允许突发数据的发送。令牌桶限制的是平均流入速率,允许突发请求,并允许一定程度突发流量。
5.Redis + Lua 分布式限流:单机版限流只能保护自身节点。而分布式限流,以集群为维度,可以方便的控制这个集群的请求限制,从而保护下游依赖的各种服务资源。分布式限流最关键的是要将限流服务做成原子化,我们可以借助 Redis 的计数器,Lua 执行的原子性,进行分布式限流。展开评论点赞