当前位置: 首页 > news >正文

如何做出健壮的系统设计

看了这篇文章:http://www.cnblogs.com/LBSer/p/4753112.html

《如何健壮你的后端服务?》

觉得写得蛮好的。

 

把提纲摘录一下。具体的内容可以去看原文。

 

怀疑第三方,防备使用方,做好自己”。

1 怀疑第三方

1.1 有兜底,制定好业务降级方案

我自己的例子:数据传输通道不稳定,本地保存全量索引

1.2 遵循快速失败原则,一定要设置超时时间

1.3 适当保护第三方,慎重选择重试机制

我自己的例子:一个兄弟团队的服务,把基础服务钱包调用压垮了(雪崩)

 

2 防备使用方

2.1 设计一个好的api(RPC、Restful),避免误用

a) 遵循接口最少暴露原则

b) 不要让使用方做接口可以做的事情

c避免长时间执行的接口

d)参数易用原则

 

e)异常

2.2 流量控制,按服务分配流量,避免滥用

2.3 我再加一个:安全性,比如外网统一要用https

 

3 做好自己

3.1 单一职责原则

3.2 控制资源的使用

3.2.1 CPU资源怎么限制?

a)计算算法优化

b)锁

c) 习惯问题

比如多线程的退出问题,是否产生死循环(HashMap线程不安全,HashTable线程安全)

d)尽量使用线程池

e)jvm参数调优

 

3.2.2 内存资源怎么限制?

看原文

 

3.3 避免单点

 

(完)

相关文章:

  • Docker Registry服务器部署配置
  • C++类、继承、多态、虚函数
  • ZOJ 3329 One Person Game
  • pyinstall tkinter image
  • CSS快速入门
  • 强力优化Rancher k8s中国区的使用体验
  • Windows 8 Platform (三) Windows 8 Developer Preview
  • 关于责任和业务(r11笔记第60天)
  • 如何测试网页登录
  • C#分部类型解析
  • 博为峰Java技术文章 ——JavaSE Swing JTabbedPane选项卡面板II
  • JS 设置盒子div 跳转
  • 数组操作函数总结
  • 在Unity(C#)下实现Lazy Theta*寻路
  • 双显卡笔记本安装CUDA+theano、tensorflow环境
  • C学习-枚举(九)
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • ReactNativeweexDeviceOne对比
  • SpriteKit 技巧之添加背景图片
  • Travix是如何部署应用程序到Kubernetes上的
  • webpack4 一点通
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 规范化安全开发 KOA 手脚架
  • 理清楚Vue的结构
  • 前端学习笔记之观察者模式
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 做一名精致的JavaScripter 01:JavaScript简介
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • #etcd#安装时出错
  • #每日一题合集#牛客JZ23-JZ33
  • (2)(2.10) LTM telemetry
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • .form文件_SSM框架文件上传篇
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .NET BackgroundWorker
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .sh
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • /bin/rm: 参数列表过长"的解决办法
  • :“Failed to access IIS metabase”解决方法
  • @EnableAsync和@Async开始异步任务支持
  • @Transaction注解失效的几种场景(附有示例代码)
  • [.NET]桃源网络硬盘 v7.4
  • [120_移动开发Android]008_android开发之Pull操作xml文件
  • [Apio2012]dispatching 左偏树
  • [Asp.net MVC]Bundle合并,压缩js、css文件
  • [BZOJ 1040] 骑士
  • [C语言]编译和链接
  • [ERROR] Plugin 'InnoDB' init function returned error
  • [E链表] lc83. 删除排序链表中的重复元素(单链表+模拟)