总结 项目中的技术方案选型和为什么

1,为什么要前后端分离。

       1.1  前后端分离可以让开发人员更专注于自己的专业,开发效率更高

       1.2  前端和后端分开部署在各自的服务器,性能更好

2,  前端为什么用vue。

       2.1  国人产的,支持国货

       2.2   响应式编程,前端给客户体验更好

       2.3   社区活跃度非常高,众多大神在后面支持你,

               很多组件直接模块化,直接拿来用即可

3,   前端服务器容器为什么用nginx

       3.1  支持百万级的并发,稳定

       3.2  功能上也满足,反向代理,动静分离等,完美解决跨域等问题

4, 传统项目缺点(所有在业务在一个项目里),为什么叫单体项目地狱

       1,维护成本高,因为所有的业务穿插在一个项目里,项目体积越来越大。

       2,测试成本高,因为在一个项目里,牵一发而动全身,改了一个地方,

             不知道对其他地方的影响,所以测试时所有项目都要过一遍

       3,部署成本高,经常启动一个传统项目要半天,有时候启动半天还不成功。

       4,技术更新成本高,比如 你JDK1,7 换成 1.8,很多地方都要改。

             来了个新需求,可能用python开发更快,但是你是传统项目,所以也不可能

       5,扩展性差, 我就一个应用,部署在一个服务器,怎么扩展

       6,容错性差     一个bug 可以导致整个系统挂掉

        综上所述,就是我需求加了一个地方,上面所有的问题都要过一遍。

5,为什么要用微服务,分布式服务

       微服务就是解决了上面问题,

6,什么是分布式id     

             1.全局唯一性:不能出现重复的ID号,既然是唯一标识,这是最基本的要求。

             2.趋势递增:在MySQL InnoDB引擎中使用的是聚集索引,由于多数RDBMS使用B-tree的数据结构来存储索引数据,在主键的选择上面我们应该尽量使用有序的主键保证写入性能。

              3.单调递增:保证下一个ID一定大于上一个ID,例如事务版本号、IM增量消息、排序等特殊需求。

               4.分布式id里面最好包含时间戳,这样就能够在开发中快速了解这个分布式id的生成时间

7,怎么生成分布式ID

          有几种方式,可以通过redis,数据库的自增字段来生成

           我采用的方式是REDIS,redis也有自增的方法,

          通过表名做key取自增,然后通过时间戳+自增做分布式ID

8, 为什么用分布式缓存,不用传统JVM缓存

         因为微服务中,经常会用到服务器集群,

         导致每个集群节点有自己的JVM,这样会导致缓存不一致问题

         所以一般用分布式缓存,也就是把缓存数据缓存到同一个节点redis上

9, 为什么要用MQ

         MQ的三大作用,  1,系统间解偶,  2 削峰   3  异步

           解偶: 我一个服务挂了,并不影响我其他服务的进行,数据也不会丢失

           削峰:  当有很多数据请求过来时,可以存放在MQ中,消费者一个个消费

           异步:  传统A服务调B服务,消耗时间是等B服务处理完,

                        通过MQ后,A服务直接把数据塞到MQ,就认为B服务处理了。

          MQ也可持久化,方式数据丢失。PS 17年就有个大厂MQ挂了,没有持久化,导致数据丢失损失上千万

10,  为什么用REDIS缓存服务器

         分布式的缓存,性能高,可扩展,哨兵模式集群,可持久化,方式数据丢失

11, 为什么要做主从数据库

                1,数据备份,当你主数据库挂了,可以马上切换到从数据库,这是高容错性

                 2,读写分离,一般主库做写操作,从库做读操作,   这是提高性能

12,  为什么要分库分表

         当你数据量少的话,这些可以不考虑

         分库的优点,1,现在很多项目都是租户概念,可以通过不同租户做分库做数据隔离

                               2,减轻数据库连接负担,好像记得MySQL每秒能够处理的最大连接数是2000

          分表:当你表的数据量达到一定数据时,对表的操作就会变得很慢,

                      数据上说,mysql单表的数量最好不要超过500万条,超过的话就考虑分表

          技术方案上  有MYCAT,SHARDINGJDBC等,我用的是SHARDINGJDBC

猜你喜欢

转载自blog.csdn.net/shrek11/article/details/101112117