技术心得--如何成为优秀的架构师

关注我,持续分享逻辑思维&管理思维; 可提供大厂面试辅导、及定制化求职/在职/管理/技术辅导;
有意找工作的同学,请参考博主的原创:《面试官心得--面试前应该如何准备》,《面试官心得--面试时如何进行自我介绍》。

博主其它经典原创:《管理心得--工作目标应该是解决业务问题,而非感动自己》,《管理心得--如何高效进行跨部门合作》,《管理心得--员工最容易犯的错误:以错误去掩盖错误》,欢迎大家阅读。

--------------------------------------正文----------------------------------------------

大家去面试时,相信都能随口说出,架构设计要考虑性能、可靠性、可扩展性。可是,针对项目中的细节一问,架构设计怎么考虑可靠性、性能等,很多同学都回答不好,甚至针对自己的项目,也讲得不清不楚。下面我说下在腾讯等大厂带团队做架构设计的几个原则(以我做的海量存储为示例来讲解。该存储量级为千万亿条kv记录的量级):

 一、关键路径一定要短。数据从入口处,到落盘,这里能短就短。经过的节点越多,出问题的概率越大。以存储为例:接口层Proxy(缓存了路由)直接把数据路由到应该落地的存储节点。关键路径就2个模块。其它作为非关键路径,即使挂了也没事,比如放全量路由的管理节点、比如数据异常时的迁移节点。当然,如果Proxy和管理节点同时出问题,会有一定的影响,但这个概率很底,而且管理节点逻辑比较简单,并且可以双机热备。

 二、非实时功能,不要集成到关键路径中。比如数据有过期功能,很多人会把删除过期数据的逻辑放到存储节点中。但当这个逻辑代码出问题的时候,或者这块逻辑需要做功能升级的时候,都需要修改存储节点。存储节点发版本越多,越容易影响现网。建议有一个外围模块,不断地去扫描过期数据并删除(或给存储节点发删除命令,直接删除担心数据多处写有一致性问题)。这样,删除逻辑即使有问题,可以让运维临时扩容解决,当然,这个模块需要重点监控。避免出现问题。

三、有状态节点双机热备。如存储节点,本身也需要写2-3份,以保证数据安全性。当一台机器出现问题时,可以快速切换到另一台机器服务。这点相信很多做架构的同学都能做到。

 四、无状态节点尽量使用容器,以做到快速扩缩容。当然,即使使用物理机,一般也能做到快速启停。

 五、对DB数据进行缓存。很多时候,DB可能会成为稳定性或性能的瓶颈。一般情况下,建议将DB数据进行缓存,而不是将DB作为关键路径。定期从DB读管理数据,并更新缓存。这样,DB不是关键路径,也不会成为性能瓶颈。

 六、做好对账功能。日志上,每个模块发送、回复一个命令,需要打印日志(但现网可以关闭,只在调试时打开)。统计上,要有每个模块每分钟(或每5分钟接受了多少请求,平均处理延时是多少等。

 七、需要把正常错误和异常错误分开。比如存储系统中,Get数据,“数据不存在”和“存储节点异常”都会导致Get失败。但一定要区分,一个是业务问题,一个是系统问题。

还有很多设计上要注意的点,比如优雅重启,比如CoreDump数据保存等。本次先总结到这,博主相信,还有很多未概括到的点。有兴趣的同学也欢迎私信交流。

本次是从技术上讲架构师之路,后续将在管理上讲讲如何成为架构师。欢迎关注博主以获得后续的干货分享。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/693124.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

三防加固平板在房地产行业的应用|亿道三防onerugged

近期,有一款引人注目的解决方案——亿道三防onerugged平板电脑,它以其出色的性能和多功能的设计,为房地产行业带来了全新的应用体验。 首先,亿道三防onerugged平板电脑的NFC功能在小区业主身份验证中发挥着重要作用。传统的身份验…

vue3组件通信方式汇总

前言:本文默认读者有JS基础和Vue基础,如果没有这个两个基础,可能阅读比较困难,建议先看下官方文档,当然,也欢迎评论交流😁 通信方式总结 常见搭配形式 一、props(使用频率最高&#…

HarmonyOS 鸿蒙应用开发(十二、paho-mqtt的mqtt客户端库移植)

PAHO MQTT 是 Eclipse Foundation 的一个开源项目,提供了用于 MQTT 协议的客户端库。这个库为使用 MQTT 协议的应用程序提供了丰富的功能和灵活性。轻量级mqtt服务器mosquitto也是其中有名的一个开源项目。 目录 PAHO MQTT介绍 移植过程 index.d.ts文件修改 写…

SOPHON算能科技新版SDK环境配置以及C++ demo使用过程

目录 1 SDK大包下载 2 获取SDK中的库文件和头文件 2.1 注意事项 2.2 交叉编译环境搭建 2.2.1 首先安装工具链 2.2.2 解压sophon-img包里的libsophon_soc__aarch64.tar.gz,将lib和include的所有内容拷贝到soc-sdk文件夹 2.2.3 解压sophon-mw包里的sophon-mw-s…

hadoop FileSystem是否要close

先来说结论,最好不要close,让hadoop自己close,否则容易把进程里其他获取fs的地方一起关了。这是因为 FileSystem.get(Configuration)做了缓存的原因。当然可以设置 conf.setBoolean("fs.hdfs.impl.disable.cache", true); 就不缓存…

Django后台管理(一)

一、admin介绍 Django 最强大的部分之一是自动管理界面。它从你的模型中读取元数据,提供一个快速的、以模型为中心的界面,受信任的用户可以管理你网站上的内容 官网:https://docs.djangoproject.com/zh-hans/4.1/ref/contrib/admin/ 提示 后台管理系统是管理人员使用,不是…

Python之海象运算符

在 Python 3.8 及更高版本中,引入了一种新的语法特性,称为"海象运算符"(Walrus Operator),它使用 : 符号。这个运算符的主要目的是在表达式中同时进行赋值和返回赋值的值。 使用海象运算符可以在一些情况下…

centos7下docker的安装

背景 总结下docker的一些知识 docker安装(有网络版) 参考文章我以前试过这个帖子,建议安装高版本的docker,(20以上的,不然可能会有一些问题) ## 1、安装依赖 [rootiZo7e61fz42ik0Z ~]#yum i…

laravel-admin的3个开发细节调整

在使用laravel-admin开发的过程中,根据官方开发文档Laravel admin | laravel-admin基本都能实现想要的效果,这里补充3个文档上没有描述的细节 Laravel8命令行创建控制器调整 在laravel-admin中可以使用php artisan admin:make UserController --modelAp…

WireShark 安装指南:详细安装步骤和使用技巧

Wireshark是一个开源的网络协议分析工具,它能够捕获和分析网络数据包,并以用户友好的方式呈现这些数据包的内容。Wireshark 被广泛应用于网络故障排查、安全审计、教育及软件开发等领域。接下将讲解Wireshark的安装与简单使用。 目录 Wireshark安装步骤…

Rasa:停止构建“代理”,并推出真正有效的LLM聊天机器人

Rasa:停止构建“代理”,并推出真正有效的LLM聊天机器人 带语言模型的对话式人工智能 (Conversational AI with Language Models CALM) 是一种用于构建可靠对话式人工智能的大模型方法。它是 Rasa 基于多年来帮助企业团队构建面向客户的助手而开发的。 CALM 的工作原理 CAL…

CSP-201809-1-卖菜

CSP-201809-1-卖菜 解题思路 #include <iostream> using namespace std; int main() {int n;cin >> n;int* array new int[n];for (int i 0; i < n; i){cin >> array[i];}cout << (array[0] array[1]) / 2 << " ";for (int i …

目录IO

目录IO 1.mkdir 创建目录文件 mkdir(const char *pathname, mode_t mode); (文件路径,文件的权限) 成功返回 0 失败返回 -1 r: 目录中是否能够查看文件 w: 目录中是否能够新建文件 x: 目录是否能够进入 2.rmdir 删除空目录文件 rmdir(const char *pathname); &am…

vivado FIR Filters

Vivado合成直接从RTL中推导出乘加级联来组成FIR滤波器。这种滤波器有几种可能的实现方式&#xff1b;一个例子是收缩滤波器在7系列DSP48E1 Slice用户指南&#xff08;UG479&#xff09;中进行了描述&#xff0c;并在8抽头偶数中显示对称收缩FIR&#xff08;Verilog&#xff09;…

2.20 Qt day1

一. 思维导图 二. 消化常用类的使用&#xff0c;以及常用成员函数对应的功能 按钮类QPushButton&#xff1a; mywidget.h&#xff1a; #ifndef MYWIDGET_H #define MYWIDGET_H#include <QWidget> #include<QPushButton>//按钮类 #include<QIcon>class MyW…

springboot+vue项目基础开发(17)路由使用

路由 在前端中,路由指的是根据不同的访问路径,展示不同的内容 vue Router的vue.js的官方路由 安装vue Router 再启动 在src下面新建router文件,创建index.js 代码 import {createRouter,createWebHashHistory} from vue-router //导入组件 import Login from @/views/Log…

六轴陀螺仪在游戏手柄中的应用及中国市场展望

随着电子竞技的兴起和虚拟现实技术的发展&#xff0c;游戏手柄作为重要的交互设备&#xff0c;其性能和功能日益受到重视。六轴陀螺仪作为一种高精度的运动传感器&#xff0c;其在游戏手柄中的应用&#xff0c;不仅提升了用户的游戏体验&#xff0c;也为游戏手柄市场带来了新的…

Kubernetes kubeadm 证书到期,更新证书

1.环境说明 lient Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.6", GitCommit:"fbf646b339dc52336b55d8ec85c181981b86331a", GitTreeState:"clean", BuildDate:"2020-12-18T12:09:30Z", G…

智慧水利数字孪生可视化,满屏黑科技!A3D引擎支持,免费即可搭建

2024年1月&#xff0c;在北京召开的全国水利工作会议&#xff0c;强调了要大力推进数字孪生水利建设&#xff0c;全面提升水利监测感知能力。 除此之外&#xff0c;2035年远景目标也提出&#xff1a;构建智慧水利体系&#xff0c;以流域为单元提升水情测报和智能调度能力。《数…

Open CASCADE学习|为什么由Edge生成Wire不成功?

Wire 是一种复合形状&#xff0c;不是由几何形状构建的&#xff0c;而是由边缘的装配构建的。BRepBuilderAPI_MakeWire类可以从一个或多个Edge构建Wire&#xff0c;或将新Edge连接到现有Wire。 BRepBuilderAPI_MakeWire 类将Edge连接到Wire。添加新Edge时&#xff0c;如果其顶点…