面试
2019-04-28 05:05:54 0 举报
AI智能生成
面试
作者其他创作
大纲/内容
后台开发基本功
MPG模型
M:caozuo系统的主线程【是物理线程】
P:协程执行的上下文
G:协程
子主题
runtime 包
NumCPU
返回本地逻辑CPU数
GOMAXPROCS
设置可同时执行的最大CPU
并发模型
GO的协程
有独立的栈空间
共享堆内存
调度由程序控制
协程是轻量级线程【一个线程可以启上万个协程】
不同goroutine 之间的通讯
全局变量加锁
channel
协程与线程
主线程是一个物理线程,直接作用在CPU上,是重量级的,非常消耗CPU资源
协程是主线程开启,是轻量级线程,是逻辑态,对资源消耗少
数据结构
设计一个HashMap,可以画图
子主题
数据库
MySQL 结构化
B+ 树
Redis 缓存
Elasticsearch
基于Lucene 的高扩展的分布式架构,是对Lucene的封装
基于 Restful web 接口
支持分布式部署,可部署上百台服务器集群
原理
索引结构就是倒排索引
比如存文章会先分词
索引先命中词在命中文章
设计模型和原理
微服务
软件架构的进化
单体架构
功能、业务在一个发布包里,部署运行在同一个进程中
优点:
易于开发
易于测试
易于部署
易于水平伸缩
缺点
代码膨胀 、 难以维护
构建、部署成本大
新人上手难
创新困难
可扩展性差
什么是微服务
微服务运行在 docker 容器里面,容器管理用 K8s。微 是一种设计思想
官方说法:
使用一套小服务来开发单个应用的方式,每个服务运行在独立的进程里,一般采用轻量级的通讯机制互联,并且可以通过自动化的方式部署
优点
独立性
敏捷性
技术栈灵活
高效团队
缺点
额外的工作 -- 服务的拆分
数据的一致性
沟通成本
特点
单一职责
轻量级通讯
隔离性
有自己的数据
技术多样性
Docker
K8s
架构图
分布式架构
分布式系统
部署在不同节点上的系统通过网络交互来完成协同工作的系统
比如:充值加积分的业务,充值系统和积分系统是两个不同的系统,一次充值加积分的业务需要两个系统协同工作来完成
分布式事务
事务的特性
原子性
要么都成功 要么都失败
一致性
执行事务前后 数据不变
隔离性
事务相互独立,只有提交完成持久性之后
持久性
什么是分布式事务:一次操作由多个系统协同完成,这种一次事务涉及到多个系统通过网络协同完成一个事务的过程称为分布式事务
CAP 理论
一致性 Consistency
可用性 Availability
分区容忍性 P
只能满足两个,不能兼顾三个 ,比如银行转账 就是AP
解决方案
两阶段提交协议 2PC
事务补偿 TCC
try / confirm / cancel
消息队列实现最终一致
操作系统Linux
0 条评论
下一页