需要考虑点
- 接口权限(开放接口-auth2权限|内部接口)
- 接口幂等性(RPC防止多次提交相同消息,使用Redis+token)
- 安全性(https)
- 防止篡改数据(验证签名sign算法)
- 利用网关(nginx)拦截接口实现黑白名单
- 接口使用http协议+json格式的restful(目的:跨平台)
- 高并发(对接口进行服务降级、熔断、隔离等)
- 可以使用统计API管理平台api swagger
- 接口设计六大原则(单一职责、低耦合、开闭原则)
系统优化思路
![03d97f9b594d2f1477eb69f31300a590.png](https://i-blog.csdnimg.cn/blog_migrate/2960d5e9b91f42c80259d98dd70753be.png)
- 基础优化
内存:如何分配内存、垃圾回收、增加缓存和锁。
网络:网络传输序列化、增加压缩、策略、散列、不同协议与格式。
CPU:用多线程提高利用率和负载。
此处利用率和负载是两个不同的概念:
利用率:在用满一个核后再用下一个内核,利用率是逐步升高的。
负载:一下子把八个核全用上了,则负载虽然是满的,但是利用率很低。即,每核都被占用了,但是所占用的资源却不多,计算率比较低下。
磁盘:尝试通过文件合并,减少碎片文件的产生,并减少寻道次数。同时在系统级别,通过修改设置,关闭各种无用的服务。 - 平台扩展
做加减法,或称替代方案:无论是互联网应用,还是日常应用,我们在查询时都增加了分布式缓存,以有效提升查询的效率。另外,我们将不被平台使用到的地方直接关闭或去除。
纵向扩展:如增加扩展磁盘和内存。
横向扩展:加减/平行扩展,使用分布式集群。 - 数据分治
根据数据的不同维度,对数据进行分类、分级。例如:我们从日志中区分error、info、和 debug,甚至将 info 和 debug 级别的日志直接过滤掉。
数据热点:例如:某种日志数据在白天的某个时间段内呈现暴涨趋势,而晚上只是平稳产生。我们就可以根据此热点情况将它们取出来单独处理,以打散热点。 - 系统降级
我们在对整体业务进行有效区分的基础上,通过制定一些降级方案,将部分不重要的功能停掉,以满足核心业务。