服务端高并发分布式架构演进之路

1. 概述

本文以淘宝作为例子,介绍从一百个到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则。
特别说明:本文以淘宝为例仅仅是为了便于说明演进过程可能遇到的问题,并非是淘宝真正的技术演进路径

非常有必要了解的Springboot启动扩展点

1.背景
Spring的核心思想就是容器,当容器refresh的时候,外部看上去风平浪静,其实内部则是一片惊涛骇浪,汪洋一片。Springboot更是封装了Spring,遵循约定大于配置,加上自动装配的机制。很多时候我们只要引用了一个依赖,几乎是零配置就能完成一个功能的装配。
我非常喜欢这种自动装配的机制,所以在自己开发中间件和公共依赖工具的时候也会用到这个特性。让使用者以最小的代价接入。想要把自动装配玩的转,就必须要了解spring对于bean的构造生命周期以及各个扩展接口。当然了解了bean的各个生命周期也能促进我们加深对spring的理解。业务代码也能合理利用这些扩展点写出更加漂亮的代码。
在网上搜索spring扩展点,发现很少有博文说的很全的,只有一些常用的扩展点的说明。

MyBatisPlus中使用@TableField完成字段自动填充

在项目中,我们有一些公共的字段需要做修改
如:
gmt_create:创建时间
creator_id:创建人
gmt_modified:修改时间
modifier_id:修改人
这时候我们可以采用 MyBatis-Plus 中的字段自动填充功能去实现
思路:抽取公用字段封装到BaseEntity类中,再将使用到此公共字段的类继承基类,最后由 MyBatis-Plus 帮我们实现自动填充,这样我们便可以在service服务类中减少一定代码重复量!

这些工具类用起来真的很”香“

刚入行的java开发程序员可能很多情况下对于一些代码的实现都是自己手动去实现的,不是说这样不好,在一定的程度上这种做法其实是浪费时间的,而且很可能出现一些错误,
不过这也是正常的,我刚入行的时候写的代码也是这样,但是学会使用现成的工具类之后,可能会给你节省大量时间。

  

delete后加limit是个好习惯么

在业务场景要求高的数据库中,对于单条删除和更新操作,在delete和update后面加limit 1绝对是个好习惯。比如,在删除执行中,第一条就命中了删除行,如果SQL中有limit 1;这时就return了,否则还会执行完全表扫描才return。效率不言而喻。
那么,在日常执行delete时,我们是否需要养成加 limit 的习惯呢?是不是一个好习惯呢?

  

:D 一言句子获取中...