某零售云技术的互联网架构发展演进之路讲解

互联网产品的发展速度是很快的,若发展速度增快技术跟不上,是影响业务的发展和用户的体现。

今天我们以电商为例讲解决下分布式的技术架构的演进

1.一开始我们搭建一个初始版本的系统或在市场买一个系统,他们的架构或许是这样的如下图

一个机器部署一个tomcat和一个数据库。tomcat容器下部署所有的业务。由于你的业务发展的很好,用户量访问比较多。当某一天发现访问界面非常慢,可能会发生卡死的情况。由于我们会自己对架构进行调整,若不调整你的老板很快找到你。让你提出架构方案,若心里没有准备那么在老板眼里你就......

于是我们提出加一台机器做数据库分离开,分离后成为应用服务器和数据库服务器,如下图

刚刚拆分完没几天,发现流量又支持不住了,那么还是同样方法加一个机器,那么这次加的是应用服务器,把应用服务器搭建成一个集群,集群可以平滑对应用扩展,避免开发成本和开发速度两次都是采用加机器的方式来解决访问速度慢的问题。

刚做了集群后遇到一个问题,那就是一个用户发起两次请求时发现总是让提示登录,这样是体现不好的。是因为HTTP是无状态的我们通过用户本地(cookie+sessionid)方式保存会话。服务器以(sessionid,Object)的方式保存用户信息,若用户与服务器匹配成功,则允许访问否则会提示登录。若用户禁止cookie,则采用url请求带sessionId的方式。

那么集群是多个服务器,那么一个会话请求多个服务器会认识是两次会话。会造成总是提示登录问题。由于我们需要解决共享Session的问题,在用户每次请求时都会请求session服务器,判断用户的请求是否有效。

于是我们可以采用硬负载或软负载,搭建的集群架构引入硬负载或软负载如下

当用户越来越多,我们的界面能够抗的住,但发现我们数据库是个瓶颈,那我们会拆分数据库,添加一台数据库。那么我们可以做主备方案/主从方案,写操作放到写库中,读操作放到读库中,通过主备方案进行数据同步。

在互联网的产品场景下,搜索功能比较多,数据库搜索在当前场景下已经不满足要求。于是我们引入搜索引擎来解决检索问题。因为搜索引擎的数据是由数据库来,那么我们又有一些问题,如哪些数据是采用全量搜索,哪些数据采用增量数据。是采用同步同步还是异步同步等等问题,这里在不同场景所要关注的问题。

对于搜索还需要对搜索词进行分词、语义、sku进行处理等在这里是比较复杂的一个技术。

根据用户的请求越来越多,为了增加高访问量我们采用通过热点数据加入缓存处理。缓存可以对页面缓存、数据缓存。

对于缓存我们后面讲解决加入缓存后对缓存的存储、缓存雪崩、缓存击穿、布隆过滤器、缓存持久化,还有在使用缓存时如何对缓存和数据库之间的数据同步。

大多我们是把缓存是应用服务器和数据库之间,在应用服务器访问时优先访问缓存,若缓存不存在时在访问数据库,这样减少对数据库IO的访问。当修改时先修改数据库在修改缓存或先修改缓存在修改数据库的方式。那么对造成两边数据一致性问题,这些是引入缓存所带来的一些问题,当然引入后带来的性能也是非常大的。

网站大了用户量大了,对于数据量和IO也会非常大。所以我们在数据库层次上,会考虑到对数据库按照业务维度进行垂直分库

 

拆分以后我们每一个DB都是独立的,用户模块的应用访问用户的数据库,商品模块访问数据库。这样的好处有两种一种是对数据隔离,一种是对每个Db进行独立部署。可以利用多个计算资源来完成整合操作。通过垂直拆分可以解决对IO问题和访问量大的问题。

如果访问量还是很大,那么就会存在大表的情况。这种情况我们是采用水平拆分,水平拆分的规则是对于大数据表(100W条或1000W条以上的表),拆成每个表100W或1000W的小表。拆成小表了,那么在SQL检索时的性能会更大。这就是通过拆分所带来的好处。水平拆分又分为分库分表或分区分表,我们应该采用哪种方式也是我们要考虑的问题。

对于千万级的表即提供C端用户也会提供运营用户,这样会带来检索条件过多带来性能下降。由于我们要对数据做隔离,分在线数据和离线数据。

后面当业务发展比较快,我们的业务越来越多,那么应用会变的很复杂。应用包含业务、逻辑、体量那么会变的也很复杂,那么我们会对模块进行拆分。

体量比较大的情况下有以下几种困难,不满足我们敏捷迭代的一些要求

  • 不好调优
  • 不好扩展
  • 改变影响比较大
  • 开发运维部署

通过以上几点我们对应用进行拆分。原来如查询用户商品时直接把用户和商品组合起来,这样耦合度很多若对一个模块进行修改那么是个灾难。

于是把应用以服务的方式进行抽象,抽象的结果如下

业务服务分别是商品前台、用户前台、支付前台。

公共服务分别是商品中台、用户中台、支付中台

抽象出会发现商品前台调用商品中台,用户前台也会调用商品中台,那么支付前台也会调用商品中台。我举例的服务并不多,这么一来关系非常复杂。若有上百个服务或上千个服务,他们的关系更是一个灾难。由于现在比较流行的企业网关。

对于现在来说发展的比较大了,有些公司会根据自己的实力做一些中间件,来满足业务发展带来的技术问题。如服务治理中间件(dubbo) 、消息中心(kafka/rabbitmq)、配置中心、定时调度中心、链路调用监控平台、系统监控等等。

以上是根据现在平台的技术,分析从开始到现在的发展架构。若有不正确或疑问请留言讨论

----------

再次感谢,欢迎关注微信公众号“零售云技术”,文章持续更新,或留言讨论

 

主要研究如何通过基于Windows操作系统内核的包过滤防火墙系统来实现网络安全 防护。基于操作系统内核的包过滤防火墙系统是基于网络层实现的包过滤防火墙系统,该系统要求 能够对所有进出计算机的IP数据包进行灵活控制,实现包过滤的核心问题是如何截获所有的IP数据 包。首先介绍了包过滤防火墙的基本结构和原理,然后在剖析操作系统内核的基础上,研究并设计了 基于Windows操作系统内核的包过滤防火墙系统。 关键词:操作系统内核,包过滤防火墙,NDIS,NIC,TCP/IP 中图分类号:TP393.08 0引言 2l世纪是网络信息安全的世纪,信息获取能力和 信息安全保障能力是当今世界各国奋力抢占的制高 点。目前我国使用的交换机、路由器等网络互联设备 几乎都是国外产品,一些国内的应用系统也是建立在 国外操作系统基础之上的。所以,建立我国自主的网 络信息安全保障体系具有重要意义。 当前使用Windows操作系统的用户占90%以上, 如何保护这些用户的信息安全,特别是解决由TCP/IP 协议的缺陷引起的Intemet安全问题具有重要意义。 本文主要研究如何通过基于Windows操作系统内核的 包过滤防火墙系统来实现网络安全防护。 1包过滤防火墙 典型的防火墙是通过执行访问控制策略来达到网 络安全的一个或一组软、硬件系统,它隔离了内部和外 部网络,是内外网络通信的唯一途径。它能根据制定 的访问控制规则对经过它的信息流进行监控和审查, 过滤掉任何不符合控制规则的信息,以保护内部网络 不受外界的非法访问和攻击。 包过滤防火墙往往可以用一台过滤路由器来实 现,对所接收的每个数据包做允许/拒绝的决定。路由 器审查每个数据包,以便确定其是否与某一条包过滤 规则匹配。过滤规则基于可以提供给IP转发过程的 包头信息。包头信息中包括IP源地址、IP目的地址、 内装协议(ICP、UDP、ICMP或IP Tunnel)、TCP/UDP目 标端口、ICMP(网际控制报文协议)消息类型和TCP 收稿
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值