对于Web系统开发来说,Net其实也是有好多知识点需要学的,虽然目前JAVA是主流,就业市场比较大,但Net也在积极的拥抱开源,大Net Core 2 出来了,这无疑给Net开发者带来更大的希望,好了,以下是自己画的知识图,给正在找工作的自己一个时间梳理下,同时也希望给你带来些许帮助,第一次画并鉴于自己知识点有限画的不好,欢迎拍我,我及时纠正,谢谢!
注:图是总-分结构,会针对一个知识点展开说明:
-
总结构图:
(图一)
-
分布式-结构图:
(图二)
-
分布式缓存 :
-
Memcached : 当然非真正意义的分布式缓存系统,分布式需要客户端自己实现,特性:key-value 方式存储;内存缓存;不支持持久化;多台服务器负载之间不支持通信;简单,高效,可靠性弱。
-
Redis:用途较多,当缓存用,高并发用(提高吞吐量),当分布式锁用(SETNX 方式)。特性:key-value 方式存储(二进制);集群;有事务却无事务回滚功能;持久化,可靠性强
-
Mongodb:No-SQL 数据库,当然没有数据结构,可以做海量数据存储,特性:主从复制集,集群;持久化,基本支持所有的数据类型;灵活强大的查询功能;
-
算法:
算法是我们解决分布式问题的利器。
-
取模:公式 a= hash(key)%N a 是哈希值,hash 为哈希函数,key 是我们的服务器IP或名称,N是服务器数量;从公式中可以直观看出,当我们增加或删除服务器数量时会导致大部分失效,如果是缓存则命中率大部分失效,可能导致缓存雪崩,另外分库,分表 也可以采用取模算法,因为数据库可以做复制集或镜像能进行数据同步,也就是不存在失效的情况了。
-
哈希一致:是一个环形链表,首先hash(key)---key (可看作是key-value 的形式) 是均衡的分布在链表中,同样的问题当我们动态增加和删除服务器时,会动态重新负载到另外一台Key即服务器上,