美文网首页
架构选择组件选择

架构选择组件选择

作者: air_b10f | 来源:发表于2019-01-14 18:38 被阅读0次

一、负载均衡

可选方案:F5, SLB, Nginx.

二、分布式调用框架

目前可选的有ZK + dubbo. ZK + Motan, ZK + dubbox, edas。

dubbo, 阿里的服务治理框架,已经不维护了,切换反应有点慢

dubboX, 当当基于dubbo搞的,还在维护可以一用,推荐。

Motan, 微博的服务治理矿建。

Edas, 阿里云服务,要收钱,侵入型很强,不推荐

三、MQ

可选的有:使用较多的消息队列有ActiveMQ、RabbitMQ、ZeroMQ、Kafka、MetaMQ、RocketMQ等。

四、缓存

1、常见的两种缓存

本地缓存:不需要序列化,速度快,缓存的数量与大小受限于本机内存

分布式缓存:需要序列化,速度相较于本地缓存较慢,但是理论上缓存的数量与大小无限(因为缓存机器可以不断扩展)

2、本地缓存

Google guava cache:当下最好用的本地缓存

Ehcache:spring默认集成的一个缓存,以spring cache的底层缓存实现类形式去操作缓存的话,非常方便,但是欠缺灵活,如果想要灵活使用,还是要单独使用Ehcache

Oscache:最经典简单的页面缓存

3、分布式缓存

memcached:分布式缓存的标配

Redis:新一代的分布式缓存,有替代memcached的趋势

3.1、memcached

经典的一致性hash算法

基于slab的内存模型有效防止内存碎片的产生(但同时也需要估计好启动参数,否则会浪费很多的内存)

集群中机器之间互不通信(相较于Jboss cache等集群中机器之间的相互通信的缓存,速度更快<–因为少了同步更新缓存的开销,且更适合于大型分布式系统中使用)

使用方便(这一点是相较于Redis在构建客户端的时候而言的,尽管redis的使用也不困难)

很专一(专做缓存,这一点也是相较于Redis而言的)

3.2、Redis

可以存储复杂的数据结构(5种)

strings–>即简单的key-value,就是memcached可以存储的唯一的一种形式,接下来的四种是memcached不能直接存储的四种格式(当然理论上可以先将下面的一些数据结构中的东西封装成对象,然后存入memcached,但是不推荐将大对象存入memcached,因memcached的单一value的最大存储为1M,可能即使采用了压缩算法也不够,即使够,可能存取的效率也不高,而redis的value最大为1G)

hashs–>看做hashTable

lists–>看做LinkedList

sets–>看做hashSet,事实上底层是一个hashTable

sorted sets–>底层是一个skipList

有两种方式可以对缓存数据进行持久化

RDB

AOF

事件调度

发布订阅等

4、集成缓存

专指spring cache,spring cache自己继承了ehcache作为了缓存的实现类,我们也可以使用guava cache、memcached、redis

自己来实现spring cache的底层。当然,spring cache可以根据实现类来将缓存存在本地还是存在远程机器上。

5、页面缓存

在使用jsp的时候,我们会将一些复杂的页面使用O scache进行页面缓存,使用非常简单,就是几个标签的事儿;但是,现在一般的企业,

前台都会使用velocity、freemaker这两种模板引擎,本身速度就已经很快了,页面缓存使用的也就很少了。

总结:

在实际生产中,我们通常会使用guava cache做本地缓存+redis做分布式缓存+spring cache就集成缓存(底层使用redis来实现)的形式

guava cache使用在更快的获取缓存数据,同时缓存的数据量并不大的情况

spring cache集成缓存是为了简单便捷的去使用缓存(以注解的方式即可),使用redis做其实现类是为了可以存更多的数据在机器上

redis缓存单独使用是为了弥补spring cache集成缓存的不灵活

就我个人而言,如果需要使用分布式缓存,那么首先redis是必选的,因为在实际开发中,我们会缓存各种各样的数据类型,在使用了redis的同时,memcached就完全可以舍弃了,但是现在还有很多公司在同时使用memcached和redis两种缓存。

接下来的介绍中,会介绍在分布式情况下guava cache、memcached、redis、spring cache的使用与原理。

参考:

技术架构图集锦https://www.jianshu.com/p/83f77a937c05

架构选择https://www.jianshu.com/p/8f191f9d5489

缓存https://muyinchen.github.io/2016/11/18/%E7%BC%93%E5%AD%98%E6%B5%85%E6%9E%90%20%E4%B8%80%20%20%E5%B8%B8%E7%94%A8%E7%9A%84%E7%BC%93%E5%AD%98%E6%8A%80%E6%9C%AF%20/

http://blog.51cto.com/xxdeelon/2084210

消息队列技术介绍https://www.jianshu.com/p/689ce4205021

如何分析一个网站的架构 https://www.jianshu.com/p/c12d03a8677b

相关文章

  • 架构选择组件选择

    一、负载均衡 可选方案:F5, SLB, Nginx. 二、分布式调用框架 目前可选的有ZK + dubbo. Z...

  • 【Vue3+Vite+TS】4.0 组件三:省市区选择组件

    必备UI组件 省市区选择组件将用到以下几个组件:Select 选择器 组件设计 修改src\router\inde...

  • VUE学习----组件使用之设置子组件样式

    >>>: 深度作用选择器 使用深度作用选择器,就可以在父组件中修改子组件的样式 深度作用选择器语法: 父组件根元素...

  • 小记

    小程序 自定义组件 在组件wxss中不应使用ID选择器、属性选择器和标签名选择器。

  • 0905自控力07

    1.选择架构 “选择架构”(choice architecture)是由行为经济学家理查德·泰勒(Richard ...

  • 关于react父组件更新,子组件无更新现象分析

    今天在封装一个滑动选择组件遇到个怪事,父组件状态记忆之前的选择,重新进入父组件所在界面那么更新之前选择的状态,但是...

  • 微服务网关Apache Shenyu

    概述 网关作为微服务架构里面的核心组件,因此在搭建微服务架构的时候选择一款合适的网关就显得非常重要了。我们之前接触...

  • 日期选择组件

    前言:授人以鱼不如授人以渔,与其寻寻觅觅找一个适合自己UI的选择器控件,不如自己动手,尝试一下。 如果你还不会 V...

  • 地区选择组件

    很多应用都会用到地区选择,有些是直接选择城市(例如大众点评、58同城等),有些是先选择省再选择城市(例如微信),这...

  • 面向对象实战

    teb切换曝光组件轮播组件日历选择Modal代码地址

网友评论

      本文标题:架构选择组件选择

      本文链接:https://www.haomeiwen.com/subject/rsvddqtx.html