精华内容
下载资源
问答
  • 分布式概念:分布式缓存
    2020-06-04 00:56:03

    缓存技术一般是指,用一个更快的存储设备存储一些经常用到的数据,供用户快速访问。
    分布式缓存就是指在分布式环境或系统下,把一些热门数据存储到离用户近、离应用近的位置,并尽量存储到更快的设备,以减少远程数据传输的延迟。

    Redis 分布式缓存原理

    每个节点都负责一部分数据的存储,同时,每个节点还会进行主备设计来提高 Redis 的可靠性。

    1.Redis 支持多数据结构。

    支持的数据结构不仅有简单的 k/v 类型,还可以支持 List、Set、Hash 等复杂类型的存储。

    以 Hash 这种复杂类型的存储为例,Redis 将 Hash 视作一个整体当作数据库的 value(可以是一个对象,比如结构体对象)进行存储。如果把 Hash 结构的整体看作对象的话,Hash 结构里的 key-value 相当于该对象的属性名和属性值。

    2.Redis 支持持久化。

    数据从内存这种易失性存储设备中写入磁盘,从而让数据永久保存。

    RDB(Redis DataBase),也称快照方式。 Redis 会定时将内存中的数据备份到磁盘中,形成一个快照,比如每天保存一下过去一周的数据。缺点:容易数据丢失,如节点故障时新数据还未持久化。

    AOF(Append Only File)。与数据库复制技术中 binary log 类似。
    AOF_FSYNC_NO (不同步),即不会自动触发写操作的同步;
    AOF_FSYNC_EVERYSEC (每秒同步),即每隔一秒都会将写操作同步到磁盘;(默认)
    AOF_FSYNC_ALWAYS (每次写都同步),即每次发生写操作会立即同步到磁盘。

    3.Redis 支持主备同步。

    异步复制技术,但 Redis 可以通过配置 min-replicas-to-write 和 min-replicas-max-lag 这两个参数来有效地保证数据一致性。

    比如,设置 min-replicas-to-write=3、min-replicas-max-lag=10,表示当至少有 3 个备数据库连接主数据库的延迟时间小于 10s 时,主数据库才可以执行写操作。延迟时间是从最后一次收到备数据库的心跳开始计算,通常每秒发送一次心跳。

    完整同步流程:

    1.当备服务器启动时,会向主服务器发送 SYNC 命令;
    2.主服务器收到命令后会生成 RDB(快照)文件,并记录从现在起新执行的写操作;
    3.RDB 生成后会发送给备服务器,备服务器通过 RDB 文件进行数据更新;
    4.更新完成后,主服务器再将新记录的写操作发送给备服务器,备服务器执行完这些新记录的写操作,便与主服务器的数据保持一致了。

    计算机体系结构缓存

    由于内存和 CPU 访问速度相差很大,为了提高 CPU 的性能,计算机内部在 CPU 与内存之间设置了相应的缓存。

    大多数机器分为三级缓存:L1 高级缓存、L2 高级缓存和 L3 高级缓存。就访问速度来讲,L1 高级缓存 > L2 高级缓存 > L3 高级缓存 > 内存。其中,L1 高级缓存的访问速度,几乎和 CPU 中寄存器的访问速度一样快。

    网络访问中的缓存

    网络访问数据时,需要与远程服务器交互来进行传输,而网络间数据传输以及远程服务器对请求的响应,会耗费很多时间。如果本机器的磁盘可以对你经常访问的远程内容进行存储,这样就不用每次都与远程服务器交互,从而减少网络数据传输与服务器响应的延迟,极大地提高性能。

    更多相关内容
  • 分布式概念

    千次阅读 2019-12-11 15:43:12
    集群与分布式区别 集群:复制模式,每台机器做一样的事。 分布式:两台机器分工合作,每台机器做的不一样。 分布式好处: 独立开发,部署,测试 易于扩展 复用性高,例如:所有的产品都可以使用该系统作为用户系统...

    集群与分布式区别

    集群:复制模式,每台机器做一样的事。

    分布式:两台机器分工合作,每台机器做的不一样。

    分布式好处:

    • 独立开发,部署,测试
    • 易于扩展
    • 复用性高,例如:所有的产品都可以使用该系统作为用户系统,无需重复开发。

    架构演进

    架构演进一: 早期雏形

    特征:应用程序主要做静态文件读取,返回内容给浏览器。

    架构演进二: 数据库开发(LAMP特长)

    特征:应用程序主要主要读取数据表值,填充html模块。业务逻辑简单,写sql处理。
    主要:增删改查
    主要压力:来自查询,多表联合,数据量膨胀。

    架构演进三: javaweb的雏形

    tomcat + servlet + jsp + mysql。一个war包打天下
    项目结构:ssh/ssm三层结构。

    架构演进四: javaweb的集群发展

    硬件机器的横向复制,对整个项目结构无影响。

    在这里插入图片描述

    架构演进五: javaweb的分布式发展

    特征:将Service层单独分离出去,成为一个单独的项目jar。单独运行。
    Web服务器通过rpc框架,对分离出去的service进行调用。
    在这里插入图片描述

    架构演进六: javaweb的微服务发展

    从业务角度,细分业务为微服务,每一个微服务是一个完整的服务(从http请求到返回)。在微服务内部,将需要对外提供的接口,包装成rpc接口,对外部开放。
    在这里插入图片描述

    服务治理:
    1、无论是分布式拆分,还是微服务拆分,最后形成的服务层应用,都需要相互之间调用。
    2、这种服务间调用是跨系统的。跨系统调用rpc有很多协议: RMI,webservice,http请求,网络达到服务间访问。

    dubbo:很多,dubbo协议
    springcloud:使用http协议通信

    3、服务集群,有负载路由。需要服务发现–zookeeper。
    4、数据积累大:订单服务—积累。

    分库/分表 -----需要修改业务sql语句。(有侵入性)----------->mycat中间件。
    /分区。 -------》对sql语是没有侵入性。------------》对库没办法减压。

    架构一个系统依据
    1、系统目标是并发数(tps)多少:tomcat的安全连接数在500tps上下
    2、系统要承受的数据量级:mysql — 单表到达 700W,性能会急剧下降。
    3、并发数(tps) transation per seconds:每秒钟的访问—每秒处理事务数。

    架构方案:

    1、首先考虑缓存方案解决性能问题
    2、集群模式------比较重的模式:浪费成本
    3、用分布式
    在这里插入图片描述

    缓存解决方案:

    缓存服务器:redis、memcache。

    一般缓存方案
    1、先到缓存中查,有值直接返回
    2、无值(缓存穿透、击穿)则调用接口或者查库,并将值补入缓存区
    3、缓存区数据与db中可能不一致,使用过期时间调节
    4、若缓存区数据集中在某一短时刻失效,将导致大量的缓存击穿(雪崩)

    永不过期方案
    1、不设置过期时间,数据永久有效,避免雪崩
    2、需要额外机制来实现数据的同步更新(参照数据同步)

    集群引起的负载问题方案,如何session共享

    1、tomcat自己插件,能够session共享
    2、spring-session插件,实现session共享。

    大数据量的切片方案

    数据分片:数据的路由保持不变

    1、设置数据片数量,比如100个柱
    2、当前库,均分这100个柱
    3、当加库扩容时,这100个柱动态迁移

    前端演进:

    1、一个url > 一个html页面 > 点击按钮跳转 > 页面跳转。
    2、页面,ajax方式刷新页面
    3、mvvm的开发流程:

    a、前端人员开发的程序包放在静态服务器里
    b、浏览器访问静态服务器,得到前端html
    c、html页面发起ajax请求到后台服务器,得到业务数据,渲染出页面。
    
    展开全文
  • ...蓝色字体 ,选择“设为星标” 优质文章,及时送达 故事从一次内部分享开始,我们每周组织组内分享,会分享...一口气没有条理的聊了分布式系统的一些概念,分布式概念还有很多,我们以后慢慢道来。

    点击上方蓝色字体,选择“设为星标”

    优质文章,及时送达


    故事从一次内部分享开始,我们每周组织组内分享,会分享一些技术,中间件,研发流程规范或者业务系统架构等内容,在进行了一系列中间件技术分享之后,会发现其中提及一系列通用的概念,这些是分布式系统所共有的,所以我们简单聊聊分布式概念。

    什么是分布式系统呢?

    从百度百科得到:

    分布式系统是建立在网络之上的软件系统,拥有软件特性,所以分布式系统具有高度内聚性,和透明性。是建设于网络之上的高层软件,而不是硬件。

    是不是看起来很拗口难以理解,简单的说:

    分布式系统是一组独立的计算机以网络链接组成的服务系统,对用户来说是一个统一的体系。

    因为分布式系统建立在网络之上,由多个独立操作系统组成,所以分布式系统对比独立部署并运行于单一操作系统之上的软件系统来说存在要解决通信和共识等问题。

    分布式系统特点

    分布式系统是多个服务器通过网络互联而构建的松耦合系统,其具备以下特点:

    1. 分布式:分布式由多台计算机组成,在地域上是独立分散的,可以分散在一个单位,一个城市,一个国家,或是全球范围内。整个系统的统一功能是分散在多个节点上实现的,因而分布式系统具有数据处理的分布式特性。

    2. 自治性:分布式系统各个节点包含自己独有的cpu和内存,具备独立的处理数据能力。一般来说每个节点是对等的,没有主次之分,可以自治的进行任务处理,还可以通过网络传输信息,协同完成任务处理。

    3. 并行性:一个大的任务可以按规则划分到多个计算节点上进行独立的子任务支持,体现了并行性。

    4. 全局性:分布式系统必须存在一个单一的,全局的通信机制,使得任何一个进程都能和其他进程通信,并且不区分本地通信和远程通信。在一个分布式集群中,往往所有机器具有统一的系统调用能力。

    在不同的抽象层次上来说,分布式系统中每一个物理机,虚拟机,docker镜像,独立进程都可以认为是一个节点。

    分布式系统可以很好的解决单机系统带来的资源限制问题,但其也存在特有缺点。

    由于一个大型集群中,机器数量众多,每天集群中机器宕机都在发生,一般在机器宕机之后,通过健康检查和负载均衡机制将流量切割迁移。故障机器可能是由于fullgc等问题造成,之后会慢慢恢复。也可能因为机器磁盘或是物理问题导致,需要人工介入。

    分布式系统中,节点之间通过网络互通互联。由于网络不稳定因素存在,所以数据丢包,消息丢失时有发生,节点之间可能无法进行通信,也就是出现了所谓的网络分化,这里我们一般引入CAP进行系统分析。

    网络传输同样会造成信息乱序问题,也就是网络传输过程中A节点发送给B节点的消息,在B节点接受消息时并不一定和A发送给B的顺序一样。这种情况可能造成业务上的问题,网络传输层次上我们可以了解下TCP的处理方式,业务上我们可以采用创建全局唯一发号器和业务幂等来处理乱序带来的如:消息的无效,信息的过期等业务问题。

    分布式系统中,节点之间通信不像单机系统那样非成功即失败,我们考虑到网络不确定性带来的问题,所以分布式场景下存在“分布式三态”的概念。也就是说A节点调用B节点,可能是B节点返回成功,或是B节点返回失败,还有就是因为网络问题而产生的超时状态,针对这种问题我们一般采用“failfast”,“retry+幂等”等方式。

    分布式网络中,通过负载均衡我们可以将请求将负载到不同节点进行数据处理,在进行数据查询时同样可能会负载到不同的节点进行数据获取。这个问题场景其实是值得深入讨论的,不同的业务要求,不同的业务容错场景存在不同的解决方案。我们可以从其他节点获取数据,也可以在数据保存时要求一定的数据一致性等级处理,在完成多节点数据复制,才响应客户端。

    正是由于分布式系统存在这样那样的异常问题,我们在进行分布式系统设计过程中需要面向异常进行系统架构设计,尽早在设计阶段考虑到可能遇到的异常问题,以进行容错的异常处理。

    无状态服务体系下,请求可以被随机或是以哈希,一致性哈希等方式负载到不同到节点进行数据处理。节点异常可以随意的将问题节点下线和新节点扩容。但是对于有状态的分布式节点我们就不能简单的,随意的对分布式节点进行上下线操作了。

    为解决分布式系统下有状态节点的数据完整性或叫做安全性的要求,我们一般采用多副本方式。

    副本(replication)指的是在分布式系统中为数据节点或是数据单元进行的冗余。

    数据副本一般分散放在多个节点之上,以提供更好的安全性,这样在某一个持有数据副本的节点宕机或是数据丢失之后,可以去其他持有副本的节点之上获取数据。所以给数据做副本是分布式系统解决数据丢失的常用手段。

    除了数据安全性提升之外,多副本也可以提升系统查询吞吐能力,当然这个需要看分布式系统怎么设计了。

    在副本设计上,我们首要需要考虑的是如何将数据正确的复制到其他数据副本之上,以满足副本数据和原始数据信息一致的要求。

    对于数据和副本之间数据一致性上我们有以下几种实现方式:

    1.  强一致性:也就是说对于数据访问者而言,访问分布式网络下任意节点下的数据副本都可以读到最新更新的数据信息。实现强一致的数据复制会牺牲系统的并发能力和吞吐能力,实现方案上也较为复杂,业务上一般不采用这种方式。

      这里抛出一个问题,是否有真正的数据强一致要求呢?还是都可以通过最终一致性搞定。

    2. 单调一致性:意思是数据访问者一旦读取到某个数据副本最新的值,就不会在读到比这个副本值旧的值了。这个概念提出是为了满足以数据访问者视角来说的数据一致性。

    3. 会话一致性:数据访问者在一次会话之内一旦读取到最新数据副本之后就不会再读取到比这个数据旧的值了,听起来是不是和上面的很类似。区别在于这里要求的是一次会话,如果同一个数据访问者发起多次会话可能就不满足这个一致性要求了,其并不对多次会话一致性提供保障,所以它是弱与上面情况的一种一致性实现。

    4. 最终一致性:其要求一旦数据在某个副本更新成功,最终在各个副本上都可以访问到最终数据,以达到最终完全一致的状态,但是完整一致性的这个时间不做承诺。最终一致性一般是我们做分布式系统设计时采用的方案,而这个最终一致性的时间承诺来自于每个系统,中间件的SLA。

    5. 弱一致性:说的是数据更新成功之后,并不能在一个确定的时间内读到更新之后的值,也不承诺其他副本可以获取最新的值。所以弱一致性在真实场景中很难被系统所采纳。

    分布式系统的副本机制很好的提升了分布式系统的高可用性,针对不同等级的一致性要求可以采用不同的解决方案,越是强一致性的模型对用户来说越友好,当然实现成本也更高。

    对于单机系统服务来说,我们考量系统的指标常来自于单机资源所带来的指标,比如内存,cpu,磁盘io等指标。分布式系统的性能指标则不一样:

    • 系统吞吐能力,一般以系统每秒处理总数据量形容。

    • 系统延迟能力,指的是完成一次任务处理所需要的时间。

    • 系统并发能力,系统可以一起合作完成一项任务的能力,通常以QPS来衡量。

    不同系统对于以上性能指标有不同的侧重,高吞吐系统往往难以做到低延迟,系统任务执行时间较长的系统,也难以承载更高的QPS。

    分布式系统中每个节点都可能因为各种原因不能提供服务,所以系统可用性是系统很重要的指标之一。通过计算系统正常提供服务和停服的时间占比计算得来,我们所说的可用性几个9就是这个道理。

    可扩展性并不是系统性能指标之一,但是对于分布式系统的设计上,我们期望实现分布式系统的线性扩展。通过系统扩展我们可以提供更大规模的吞吐,提升集群整体存储容量,提升集群计算能力。

    一口气没有条理的聊了分布式系统的一些概念,分布式概念还有很多,我们以后慢慢道来。

    展开全文
  • #资源达人分享计划#
  • Java中分布式概念

    2021-04-20 22:27:02
    什么是分布式? 将一个大的系统划分为多个业务模块,业务模块分别部署到不同的机器上,各个业务模块之间通过接口进行数据交互。区别分布式的方式是根据不同机器不同业务。 微服务的设计是为了不因为某个模块的升级和...

    什么是分布式?
    将一个大的系统划分为多个业务模块,业务模块分别部署到不同的机器上,各个业务模块之间通过接口进行数据交互。区别分布式的方式是根据不同机器不同业务。
    微服务的设计是为了不因为某个模块的升级和BUG影响现有的系统业务。
    微服务与分布式的细微差别是,微服务的应用不一定是分散在多个服务器上,可以是同一个服务器。
    分布式和微服的架构很相似,只是部署的方式不一样而已,分布式属于微服务。

    1、Maven:
    1、maven的三种打包方式及区别?
    maven package:打包到本项目,一般是在项目target目录下。如果a项目依赖于b项目,打包b项目时,只会打包到b项目下target下,
    编译a项目时就会报错。
    maven install:打包到本地仓库,如果没有设置过maven本地仓库,一般在用户/.m2目录下。如果a项目依赖于b项目,那么install b时,
    会在本地仓库同时生成pom文件和jar文件,可以看install b
    maven deploy:打包上传到远程仓库,如:私服nexus等,需要配置pom文件

    9、Redis:
    1、Redis的使用?
    使用方法:在service模块的pom中引入jedis依赖,常见JedisClient接口,定义set、get、hget、expire、ttl等方法,创建JedisClientCluster类实现接口,
    并重写里面的方法,创建JedisClientPool类,实现接口,并重写里面的方法。
    Key命令:
    Expire:设置过期时间、TTL:查看key的过期时间、Persist:清除key的过期时间。
    Redis持久化方案:
    Rdb:保存到磁盘中;AOF:把数据库操作命令保存到文件中,数据库恢复时把命令重新执行一遍。
    Redis集群:
    集群没有入口,连接任意一个即可。
    集群的容错机制:发送ping命令,超过半数就认为挂掉。
    redis集群中至少需要三台服务器来保证高可用,三个备用服务器,至少需要6台服务器,需要使用ruby脚本搭建集群。
    注意:单机版和集群版不能共存,使用单机版时注释集群版的配置。使用集群版,把单机版注释。
    2、redis分布式锁
    业务场景是要求同一个用户针对同一类借款,只可以存在一笔待还借款。
    第三方平台每次都会在同一时间发送多次相同的借款请求。
    使用redis锁控制用户借款串行执行。
    3、redis存储的数据类型有哪些?
    String、List、Set、Hash、SortedSet。
    4、Redis的使用场景?
    1、活动倒计时方案
    1、活动开始的时间是固定的。
    2、使用SELECT NOW();取出当前时间并作为基准时间
    3、拿活动开始时间-基准时间可以计算出一个秒为单位的数值,并作为活动过期时间。
    4、在redis中设置一个key(活动开始标识)。使用expire命令将第三步计算出来的时间设置为key的过期时间。
    5、使用redis中的Ttl命令取出key的剩余生存时间,在前台展示活动剩余的时间。
    2、秒杀方案
    1、把商品的数量放到redis中。
    2、秒杀时使用redis中的decr命令对商品数量减一。如果不是负数说明抢到。
    3、一旦返回数值变为0说明商品已售完。

    10、Kafka :
    1、Kafka的简单概述
    Kafka是一个分布式发布-订阅消息传递系统。
    producer:消息生产者,发布消息到kafka集群的终端或服务。
    consumer:从 kafka 集群中消费消息的终端或服务。
    topic:每条发布到 kafka 集群的消息都属于topic类别,即 kafka 是面向 topic 的。
    生产者将输入写入到主题topic,而消费者则从主题topic中读取写入的数据。因为卡夫卡是一个分布式系统,所以topic主题会实现跨多个节点
    分区和复制。
    Activemq:
    在service层的pom中导入activemq-all的jar包,在商品添加完成后把商品的id发送一个mq消息。

    11、Dubbo :
    实现不同系统之间的调用。(要实现商品列表查询需要两个系统之间进行通信)
    缺点:只能是java与java项目之间调用
    Provider、Consumer、Registry、Monitor、Container
    使用方法:在service层的pom中引入dubbo、zookeeper和zkclient依赖,同时要排除netty的依赖,避免jar包冲突,在spring配置文件中配置约束、
    注册中心端口号、地址,并在20880端口上暴露服务,然后发布dubbo服务。
    在web层的pom中引入相同的依赖,在spring配置文件中引入约束、注册中心端口号、地址,并引用dubbo服务。
    在spring配置文件中配置注册中心的地址、需要暴露服务端口号,
    默认20880,发布服务。
    服务Provider启动时首先初始化一个Spring容器,然后向注册中心
    发送注册服务,消费者从注册中心拿去提供者的服务,监控中心监控
    提供者和消费者的关系。
    注册中心就如同房产中介,使用Zookeeper作为注册中心,也可以使用redis,
    ,可执行文件前面都带x,由于要快照存储,需要修改zoo.cfg配置文件,
    ./+文件名 start启动Zookeeper,status/stop查看启动模式。
    在service模块中发布服务,在接口模块中调用服务,引入dubbo依赖时,spring和netty的依赖会产生冲突
    要在pom中添加exclusions排除标签。
    32位的虚拟机要装32位的软件。
    在pom文件中添加模块的依赖就可以引用模块里面的接口了。
    解压:tar zxxf + 文件名
    包扫描器扫描到包时会创建一个bean,bean的id是类名首字母小写。

    16、Nginx
    nginx:是一个http(web)服务器;就是只能运行html、css、js
    tomcat:http服务器+servlet服务器;可以运行html、css、js、java
    tomcat虽然能提供http服务,但性能达不到高并发要求。并发请求超过1000相应速度就会下降
    nginx+多个tomcat实现高并发的性能
    Nginx反向代理配置:
    Nginx是一款高性能的http服务器/反向代理服务器及电子邮件代理服务器。
    应用场景:
    1、http服务器,可以做网页静态服务器。
    2、虚拟主机,一台服务器虚拟多个网站,启动多个网站,配置多个server。
    3、反向代理,负载均衡,反向代理搭建多台服务器集群。
    通过域名去访问指定的IP地址,使用SwitchHost修改配置信息和Nginx配置文件。
    通过后面的域名去访问前面的ip地址。
    在nginx.conf进行配置:

    server {
        listen       81;
        server_name  localhost;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
            root   html81;
            index  index.html index.htm;
         }
     }
    server {
        listen       80;
        server_name  www.souhu.com;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
            root   html-souhu;
            index  index.html index.htm;
         }
     } 
    server {
        listen       80;
        server_name  www.163.com;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
            root   html-163;
            index  index.html index.htm;
         }
     } 
    

    通过http://192.168.25.128:81/访问html81下的index文件

    C:\Windows\System32\drivers\etc\hosts
    vim html-souhu/index.html
    sbin/nginx -s reload
    复制文件夹:cp -r html/ html81
    192.168.25.128 www.souhu.com
    192.168.25.128 www.163.com

    17、SSO系统:
    SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统,注册和登录都是一个单独的系统。
    传统登陆模式:
    判断用户是否登录:判断session中是否有用户信息,通常使用拦截器来处理。
    集群:多台服务器提供相同服务;
    建立集群:Session复制,
    集群中的节点最多不能超过5个,并发量多了要采用分布式;
    Session服务器:Session的统一管理
    单点登录主要解决了Session共享的问题;
    认证:检查数据是否可用
    传递参数(用户名,手机号,邮箱唯一),类型(1/2/3)
    如果数据库中存在该数据,该注册数据不可用,不存在的话该数据可以使用。
    /{param}/{type}:URL传参,后台接收要用@PathVariable注解。
    注册:先验证用户名、手机号和邮箱是否为空,然后认证用户信息是否重复,之后对密码进行Bcrypt加密,之后插入数据。
    登录:先校验用户名是否存在,再校验密码是否正确,然后使用UUID生成token,把密码清空,将token作为key,用户信息作为value放入到redis中并
    设置Sessio的有效时间,然后将token放入到cookie中。
    再次登录:先从Cookie中取token,调用接口通过token去redis中查询是否存在用户信息,查不到说明用户登录已经过期返回登录页面,存在重新设置
    过期时间,返回用户已经登录然后进入到首页。
    安全退出:通过token去删除redis中的用户信息,并把过期时间设置为0.
    解决js的跨域问题可以使用jsonp。
    JsonUtils.objectToJson():对象转JSON
    JsonUtils.jsonToPojo():JSON转对象

    18、Freemarker:静态模板页面:
    使用方法:引入freemarker依赖,然后将模板和Java对象整合到一个html页面。
    获取Configuration对象,设置版本号、模板文件路径、编码格式,然后将对象写入到一个静态页面,设置存放路径。
    语法 :${key}:取值、</#list>:遍历、</#if>:判断、<#include “”>:包含,类似于JSTL中的语法。
    redis中存放的value值是json数据,需要转化为对象之后才能使用。
    在页面点击商品图片或标题展示商品详情页面:通过商品id去查询商品信息和商品详情信息。
    通过商品id去redis中查询数据,查询不到再去数据库中查询数据,然后放入redis中,设置过期时间为一天。
    生成静态页面的时机:商品添加后,生成静态页面。可以使用Activemq,订阅topic(商品添加)
    网页访问:使用nginx访问网页。在此方案下tomcat只有一个作用就是生成静态页面。
    为了提高redis的高可用,使用定时任务把不常访问的商品从redis缓存中清除。
    Freemaker生成静态页面的时机:添加商品后使用activemq广播消息,freemaker监听到消息去数据库查询商品生成静态页面

    传统项目是一个工程部署到一个Tomcat上,300-400并发访问量后性能就会降低,当并发量达到1000时要考虑解决问题的方法,可以使用Nginx提供负载均衡,
    把请求分配给Tomcat集群,当用户登录后把信息写入Session中,Tomcat中的广播机制可以实现Session共享问题,当并发量达到10000时,由于Tomcat要去进行
    Session复制,所以没有时间再去解决用户的请求,需要按照功能点把系统拆分,拆分成独立的功能。然后根据每个模块的并发量大小再去进行集群的配置。
    前台需要查询数据库,订单系统需要查询服务,这是可以把查询整理为一个服务,所以SOA架构被引入了,代码复用性提高了。
    SOA架构:把项目分为表现层和服务层,表现层只用于展示页面,服务层只用于提供服务。

    <dubbo:registry protocol=“zookeeper” address=“192.168.25.128:2181” />
    tracker_server=192.168.25.133:22122
    E:\图片\测试图片\500.jpg

    <dubbo:registry protocol=“zookeeper” address=“192.168.25.128:2181” />

    <dubbo:protocol name=“dubbo” port=“20881” />

    什么地方用到了页面静态化?
    https://blog.csdn.net/yang_guang3/article/details/84309631
    商品详情页面展示的时候;
    语法:
    </#list>:遍历数据,<#include>:引入其他页面, d a t e ? d a t e : 格 式 化 日 期 , {date?date}:格式化日期, date?date{person} :获取数据,<#if > <#else>:判断语句;
    如果要取一个不存在的值时,不能直接取,要取非${aaa! },利用if语句转入到else语句中。
    用法:
    1、引入freemarker相关依赖;2、编写xml配置文件(模板标签和模板文件存放路径);3、利用FreeMarkerConfigurer,Template生成模板文件。

    Quartz的使用
    商城中促销功能的实现
    1.每天凌晨24点从mysql中查找明天过生日的用户的手机号码存入到redis中
    2.每天早上7点从redis中读取手机号发促销短信

    展开全文
  • 适合对zookeeper有一定使用的人员,想深入了解zookeeper分布式概念。本书讲解的非常详细。
  • #资源达人分享计划#
  • 分布式 概念

    2017-09-26 17:12:43
    分布式系统是指组件分布在网络上,组件之间通过传递消息进行通信和动作协调的系统,她的核心理念是让多台服务器协同工作,完成单台服务器无法处理的任务,尤其是高并发和大数据的任务。她的特点如下: 透明性:...
  • 本书旨在全面介绍因特网及其他常用分布式系统的原理、体系结构、算法和设计,内容涵盖分布式系统的相关概念、安全、数据复制、组通信、分布式文件系统、分布式事务等,以及相关的前沿主题,包括web服务、网格、移动...
  • 分布式系统概念

    万次阅读 多人点赞 2018-11-15 16:25:36
    分布式系统 分布式系统的由来: 国内来讲,移动互联网的爆发伴随着分布式系统的突现,移动互联网最大的特点是2(to)c的o2o产品越来越多,这跟传统2B的系统最大区别就是用户量的不同,2C系统的用户量远远要高于2b...
  • 概念格的关联规则,包括算法描述和概念,有自己的总结
  • 分布式系统概念与设计》旨在全面介绍因特网及其他常用分布式系统的原理、体系结构、算法和设计,内容涵盖分布式系统的相关概念、安全、数据复制、组通信、分布式文件系统、分布式事务等,以及相关的前沿主题,包括...
  • 分布式系统概念与设计 原书第5版.pdf,分布式系统知识必不可少的一本书,分布式的通信,安全,文件系统,事物等知识
  • 今天对分布式相关的一些概念与理论进行学习。 1.集群与分布式 **集群:**相同的应用部署在多台服务器。 **分布式:**不同的应用部署在多台服务器。 1.数据一致性 在分布式环境中,为了提高系统整体性能,数据以多...
  • 分布式系统概念与设计第五版答案 全 积分最少的资源啦!欢迎下载和分享!答案详尽细致,物有所值。
  • ** 1、概念 **    其实分布式不一定就是不同的组件,同一个...可以看出这两个概念并不完全冲突,分布式系统也可以是一个集群,例子就是前面说的zookeeper等,它的特征是服务之间会互相通信协作。 2、
  • 分布式共识就是在多个节点均可独自操作或记录的情况下,使得所有节点针对某个状态达成一致的过程。 一致性是指,分布式系统中的多个节点之间,给定一系列的操作,在约定协议的保障下,对外界呈现的数据或状态是一致...
  • 分布式概念及相关的名词定义

    千次阅读 2022-05-06 23:53:54
    该领域需要解决的问题极多,在不同的技术层面上,又包括:分布式缓存、分布式数据库、分布式计算、分布式文件系统等,一些技术如MQ、Redis、zookeeper等都跟分布式有关。 分布式两种形式 从理念上讲,分布式的实现有...
  • 今天从宽泛的角度谈谈AWS的分布式概念。首先,AWS是一个基于分布式架构构建的云服务,我想这一点是最清楚最明白,人人皆知不过的了。但是,当我们开始使用AWS以后就会发现分布式远不像我们想象中那么清晰,而是经常...
  • 分布式系统 概念与设计 第五版 中英文pdf+课件
  • 分布式系统概念与设计(第5版)英文版和中文版 超清晰 非常清晰
  • ZooKeeper学习之分布式概念和特点 前言 随着计算机系统规模变得越来越大,将所有的业务单元集中部署在一个或若干个大型机上的体系结构,已经越来越不能满足当今计算机系统,尤其是大型互联网系统的快速发展,各种...
  • 分布式系统概念与设计(第五版)课后答案 第一章至第二十一章全
  • 总结-Java分布式概念简述

    千次阅读 2018-05-29 00:22:54
    本文是基于个人学习理解的简单总结,有非专业地方,还望指教 1、分布式是什么? 分布式是一种架构模式,是将公有模块进行提取,构建成单独的模块,部署在不同服务器上进行调用。 2、为什么要用分布式? 从系统...
  • (一)分布式 传统的单体架构模式简单方便,但是在如今高并发的应用场景中,单体架构已不适用,而且单体架构也有明显的缺点 存在单点故障导致整体不可用 全部任务都在同一服务器(节点)处理,响应慢、压力大 ...
  • 3分钟读懂系统架构演变 了解时下最火的微服务概念 本人将从大到小给你讲授系统架构的演变(此处的大小不是对比项目的大小,而是单个模块的大小) 集中式架构 → 垂直拆分→ 分布式 → (服务治理) → 微服务 咱们先从...
  • 1、分布式 小明的公司又3个系统:系统A,系统B和系统C,这三个系统所做的业务不同,被部署在3个独立的机器上运行,他们之间互相调用(当然是跨域网络的),通力合作完成公司的业务流程。 将不同的业务分部在...
  • 分布式系统:概念与设计(原书第5版)讲解了分布式操作系统的概念

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 359,136
精华内容 143,654
关键字:

分布式概念

友情链接: Roll A Ball Project.zip