获得徽章 1
- #青训营笔记创作活动#
2月16日 打卡day8
今日学习
主要内容:Kafka
1、消息系统
Kafka 和传统的消息系统(也称作消息中间件)都具备系统解耦、冗余存储、流量削峰、缓冲、异步通信、扩展性、可恢复性等功能。与此同时,Kafka 还提供了大多数消息系统难以实现的消息顺序性保障及回溯消费的功能。
2、存储系统
Kafka 把消息持久化到磁盘,相比于其他基于内存存储的系统而言,有效地降低了数据丢失的风险。也正是得益于 Kafka 的消息持久化功能和多副本机制,我们可以把 Kafka 作为长期的数据存储系统来使用,只需要把对应的数据保留策略设置 为“永久”或启用主题的日志压缩功能即可。
3、流式处理平台
Kafka 不仅为每个流行的流式处理框架提供了可靠的数据来源,还提供了一个完整的流式处理类库,比如窗口、连接、变换和聚合等各类操作。
整个 Kafka 体系结构中引入了以下 3 个术语。
-Producer:生产者,也就是发送消息的一方。生产者负责创建消息,然后将其投递到 Kafka 中。
-Consumer:消费者,也就是接收消息的一方。消费者连接到 Kafka 上并接收消息,进 而进行相应的业务逻辑处理。
-Broker:服务代理节点。对于 Kafka 而言,Broker 可以简单地看作一个独立的 Kafka 服务节点或 Kafka 服务实例。大多数情况下也可以将 Broker 看作一台 Kafka 服务器,前提是这台服务器上只部署了一个 Kafka 实例。一个或多个 Broker 组成了一个 Kafka 集群。一般而言, 我们更习惯使用首字母小写的 broker 来表示服务代理节点。展开评论点赞 - #青训营笔记创作活动#
2月15日 打卡day7
今日学习
问题:怎么样才能在用户不做任何操作的情况下,网页能收到消息并发生变更?
解决:网页的前端代码里不断定时发HTTP请求到服务器,服务器收到请求后给客户端响应消息 【是一种伪服务器推送的形式————>服务器将数据推送给浏览器的技术】
网页游戏:会有大量的数据需要从服务器主动推送到客户端
websocket————基于TCP的新协议
全双工:TCP连接的两端,同一时间里,双方都可以主动向对方发送数据
半双工:同一时间里,客户端和服务器只能有一方主动发数据
webscoket————适用于需要服务器和客户端(浏览器)频繁交互的大部分场景。比如网页/小程序游戏,网页聊天室,以及一些类似飞书这样的网页协同办公软件。
正因为各个浏览器都支持HTTP协议,所以websocket会先利用HTTP协议加上一些特殊的header头进行握手升级操作,升级成功后就跟HTTP没有任何关系了,之后就用websocket的数据格式进行收发数据。
展开评论点赞 - #青训营笔记创作活动#
2月14日 打卡day6
今日学习
1、插上网线之后,获得IP的方式主要有两种。
第一种是,自己手动在电脑里配。在选择手动配置之后,除了IP地址还需要配上子网掩码和路由器的地址。
第二种获取IP的方式,DHCP(DynamicHostConfigurationProtocol,动态主机配置协议)。
2、DHCP,联网之后可以自动获取到本机需要的IP地址,子网掩码还有路由器地址
四个阶段:
本机广播求一个ip,dhcp服务器接收信息后通过广播的形式(单播)将一个空闲ip返回电脑,电脑拿到ip后再次广播“确定ip”,dhcp服务器回复一个ACK,即本机获得这个ip在一段时间的使用权。

3、TCP面向连接的,UDP是无连接的
4、曾经使用过某ip,再次联网时,会优先再次请求这个ip,省下了第一第二阶段的广播。
5、在得到DHCP ACK之后,机子不会立刻就用这个IP,而是会先发三条ARP消息,在三次无偿ARP消息之后,确认没有冲突了,才会开始使用这个IP地址进行通信。
【ARP消息的目的是通过IP地址去获得mac地址】展开评论点赞 - #青训营笔记创作活动#
2月13日 打卡day5
今日学习
不使用 select *
- 增加查询分析器解析成本。
- 增减字段容易与 resultMap 配置不一致。
- 无用字段增加网络 消耗,尤其是 text 类型的字段。
联合索引里面有个索引跳跃扫描机制,可以打破最左匹配原则。
select *禁止使用的主要原因,是由于网络开销大和无法使用索引覆盖原理,select *里面的*,只是要求结果集返回所有字段,并不会导致索引失效,索引失效只跟form/where后面的内容有关。
select * 会走索引


展开评论点赞 - #青训营笔记创作活动#
2月12日 打卡day4
今日学习
了解到开发顺序:
- 通读一遍需求文档和原型图
- 梳理业务逻辑,进行抽象,明确有多少个功能需求要开发
- 根据功能需求创建数据库,创建表,添加字段,设置合适的字段类型,长度,主外键等
- 考虑业务场景,创建索引...
- 开始疯狂的CRUD...
- 开始疯狂的加Cache...
- 开发疯狂的给客户端提供数据接口...
- 持续迭代:根据业务增长做负载均衡、分库分表、读写分离....
软件架构演进史:单机架构——>集中式架构——>分布式微服务架构
DDD:领域驱动设计收起
展开评论点赞 - #青训营笔记创作活动#
2月11日 打卡day3
今日学习
每张表由于自身的字段不同、字段所占用的空间不同等原因,它们在最佳性能下可以存放的数据量也就不同。
MySQL查询速度主要取决于磁盘的读写速度,因为MySQL查询的时候每次只读取一个节点到内存中,通过这个节点的数据找到下一个要读取的节点位置,再读取下一个节点的数据,直到查询到需要的数据或者发现数据不存在展开评论点赞 - #青训营笔记创作活动#
2月10日 打卡day2
今日学习
本地锁失效是因为无法锁住各个应用的读写请求,失效的根本原因就是其他的服务无法感知到是否已经有请求上锁了,即无法共享锁信息。
解决死锁问题:给这个分布式锁加个过期时间。展开评论点赞 - #青训营笔记创作活动#
2月9日 打卡day1
今日学习
今天主要学习【限流】,限流是限制到达系统的并发请求数量,保证系统能够正常响应部分用户请求,而对于超过限制的流量,则通过拒绝服务的方式保证整体系统的可用性。
1.计数器----限制单位时间内访问次数
2.滑动窗口----固定可移动数量的格子,固定时间段分块
3.漏桶----固定容量
4.令牌桶----固定速率
5.Redis + Lua 分布式限流展开评论点赞