# SAAS系统架构设计的思考
关于SAAS系统架构设计,一直有这么一个概念,就是提供一个平台,这个平台给不同的商户使用,每个商户的数据都是独立且不干扰的。
基础此平台的软件架构该如何搭建了?
看了很多多租户都是在配置文件里面写好数据源,这种做法显然不合理,如果有50甚至100+的商户平台,这个在配置文件中就是没法维护了。
最近看到didispace
的博客算是找到共同的想法点;首先肯定是有一个主数据库,主库维护商户信息、公共信息,其他的库就是每个商户自己的数据。
博客看了一遍,感觉可行,只是我自己还没有进行自我实现,有待自己实现一遍。其中了解到ThreadLocal这个觉得很有用,因为每一个api进来,都是一个Thread,我们将用户标识设置到这个里面去,当前Thread就是安全的。当然这个还有待自我实验。
博客地址:http://blog.didispace.com/saas-design-by-spring-boot-application/
如果在想一点,在现有微服务大行其道的基础上,来实现多租户的架构的时候,在进行数据与商户的的切换就没必要放在数据源动态切了,完全可以放在网关这一层进行不同服务的切换。
在深入想一点,如果使用微服务的架构,在网关层只进行负载均衡的服务分配,具体的服务层根据用户标识在进行数据源的切换也更好处理,因为每个服务都是一样的主数据源配置,减少了运维成本。