1.分库分表的方案有哪些?

垂直分库:根据业务耦合性,将关联度低的不同表存储在不同的数据库,按业务分类进行独立划分。与”微服务治理”的做法相似,每个微服务使用单独的一个数据库

垂直分表:垂直分表是基于数据库中的”列”进行,某个表字段较多,可以新建一张扩展表,将不经常用或字段长度较大的字段拆分出去到扩展表中,大表拆小表,便于后期维护,也能避免跨页问题。MySQL底层是通过数据页存储的,一条记录占用空间过大会导致跨页,造成额外的性能开销。另外数据库以行为单位将数据加载到内存中,这样表中字段长度较短且访问频率较高,内存能加载更多的数据,命中率更高,减少了磁盘IO,从而提升了数据库性能。

水平分库:就是把原本存储于一个库的数据分块存储到多个库上

水平分表:当一个表中的数据量过大时,我们可以把该表的数据按照某种规则,进行划分,然后存储到多个结构相同的表,和不同的库上

2.说下文章详情的方案流程

方案1. 查询文章id去数据库查询文章详情内容 再封装数据返回到页面

方案2. 首先引入freemarker和minIO,然后根据文章内容通过freemarker模板技术生成静态的html文件,把生成的文件存入到minIO分布式文件系统中得到资源的访问路径,然后保存资源路径到文章表中,用户查看文章详情,可以直接访问静态资源的路径完成文章查看,提升业务性能。

3.为什么要做静态化?有哪些好处?

因为我们查询的大文本内容,如果直接从数据库查询,会消耗比较大的性能

使用静态化模板,避免直接查询数据库。由于生成的文件是静态html,可以加速访问,查询也比较方便,也偏于后期做cdn优化

4.cdn加速了解吗?

参考阿里云

CDN的全称是:Content Delivery Network

即内容分发网络,是建立并覆盖在承载网之上,由分布在不同区域的边缘节点服务器群组成的分布式网络。它出现的目的是为了解决因分布、带宽、服务器性能带来的访问延迟问题,适用于站点加速、点播、直播等场景,用户可以就近获取需要的内容,解决Internet网络拥挤的状况,提高用户访问网站的响应速度和成功率。个人理解,它有点像jd的物流模式。