内容简介:以之前看的一本书淘宝这十年来,一起回顾下电商系统的发展历程,其实也折射了目前很多系统的技术的发展变革。源码中有本书,【淘宝技术这十年】,从单机版到目前淘宝的技术状态。#####(一)目的
以之前看的一本书淘宝这十年来,一起回顾下电商系统的发展历程,其实也折射了目前很多系统的技术的发展变革。源码中有本书,【淘宝技术这十年】,从单机版到目前淘宝的技术状态。
#####(一)目的
1. 一起了解学习的分布式专题技术可以串起来。
2.了解电商系统相关的技术知识。
3.面试,工作可以应用到。
#####(二)一个电商系统到底包含什么
图有点长,网上找的但是如果要做这个系统老费劲了。体力活。美国,苏宁,京东电商大型网站都是上万人研发。可见系统的庞大。
#####(三)系统的历史
* 淘宝第一版–个人网站
LAPM 【linux+apche+php+mysql】
-
1.java早期的电商网站
> 多个模块在一个系统中,通过jdbc的访问同一个数据库。
存在的问题,随着流量越来越大,数据库查询速度慢,系统反应慢等等,单机的性能瓶颈。
-
2.java电商网站,引入集群
> 加机器的方式解决,集群的方式来解决。
存在的问题,访问的那台机器是不知道的。
-
3.java电商网站,引入负载
> 增加负载的方式,分为硬负载f5,软负载nginx。
存在的问题,第一次访问的机器是A机器,第二次因为负载了访问了B机器。
-
4.java电商网站,负载后,请求的4种解决方案。
>(1)hash的方式,通过请求IP的hash值绑定要请求的服务器。
存在的问题,abc每次请求都发A机器,这个就是受单点的问题,如果A机器挂了,abc的请求得不到转向,一直请求A机器,用户一直访问不了,一直报错。
(2)session的复制,通过A和B机器进行相互的session复制
存在的问题,tomcat广播的形式,造成资源的浪费,100万用户在线,等于每个tomcat里面都有100万的用户session的信息,对系统的浪费承诺很大。适用于小型网站。
(3)基于cookie的方式,cookie包含session的数据
解决了上面session复制,资源的浪费,服务端的压力的问题。
存在的问题,数据不安全的问题,用户数据的都在客户端,存在破解的可能。手机一般都使用这种cookie的方式,手机都是单独自己使用的,不存在公共部分。
(3)session集中存储的方式,加入 redis 或者其他中间件
存在的问题,相比前集中增加了redis中间件,增加了运维和开发的成本。如果用户量非常大,用中间件的方式也是可用性非常高的。
- 5.java电商网站,数据库原来一个应用一个数据库,需要集群数据库用同一个。
5.java电商网站,数据库分读写,解决高并发读写的问题,master和slave流量的问题。
存在的问题:下单之后到主库,然后立马查询到从库。这个时候主库信息还没同步到从库中,系统可能就报错了。这种问题解决方案只有一个TDDL,sharding-jdbc。
- 6.java电商网站,读写分离,分库分表。
proxy:应用程序在访问数据库的时候,中间拦了一层,通过拦截可以知道是select 还是insert,update判断是走主库还是从库。proxy需要维护,维护高可用,协议要拦截性能要下降。
应用层:shardingJDBC基于jdbc底层的请求原理,请求的时候改成 sql 的方式。访问读库还是从库。开发人员需要了解shardingJDBC的业务,增加了开发成本和学习的成本。数据库管理需要。
- 7.java电商系统,增加搜索引擎和redis集群
search cluster 全量同步,和定时增量同步都是通过读 mysql 的binlog完成的。解决数据库压力。
redis cluster 通过缓存到redis中,直接从redis中获取,减少数据库的读写。
CDN 通过将静态文件放到指定的服务器,通过CDN下载静态资源。
#####(四)分布式时代
引文:商品模块和会员模块两个不同的人开发,他们是互相调用的关系,商品模块的人开发完毕了,但是会员模块的老铁说,今天不上了,这是不是很尴尬,商品模块的需要回滚到满足会员模块的,两个人就开始掐架了,我好心写了你让我回滚,会员模块的说其实我也不想,这个产品经理不让上。随着系统越来越大,各个模块变成了系统,每个系统是由不同小组来完成的,为了满足互相之前不受影响,就开始服务化。
-
说说淘宝的HSF 和 dubbo
> 提供对Dubbo和HSF两个RPC框架的支持。阿里巴巴第一代RPC框架Dubbo是国内第一款成熟的商用级RPC框架,已于2011年正式对外开源,目前已发展成为国内开源价值最高、用户使用规模最大的开源软件之一。最新一代RPC框架HSF,全称High Speed Framework,也叫”好舒服”,”很舒服”框架,是阿里内部对这一款高性能服务框架的昵称,是一款面向企业级互联网架构量身定制的分布式服务框架。HSF以高性能网络通信框架为基础,提供了诸如服务发布与注册,服务调用,服务路由,服务鉴权,服务限流,服务降级和服务调用链路跟踪等一系列久经考验的功能特性。
他们之前的互相调用很复杂。至少功能进行了解耦,会员和商品之前的依赖关系,会员上线失败只会局部的影响。但是会产生一个问题互相的调用,占用更多的网络资源。
-
分库分表的方式继续优化
> 每个应用一个数据库不在整个使用一个数据库了,每个应用一个库,对于比较复杂的利于订单,产品通过sharding-jdbc来进行分表。用的最多的hash取模的方式,hash比较均匀,避免数据热点的问题。但是hash的方式不容易进行扩展,之后会说如何针对hash进行扩展。
- 消息中间件
异步和解耦,双11下单的量很大,从Notify>metaq>rocketMq都是一样的。削峰填补。下个单需要查库存,告诉统计系统,还有风控系统。平常时候统计系统是不用的,而是双11的时候使用,总不能平常的时候把统计系统的代码注释吧?到双11在把代码放开,然后在上线。利用rocketMq的来解决。
- 图片服务
- oss tfs的方式。上传一次,公用的都可以拿到。给每个图片识别一个号,第二次上传会读hash,如果这个hash已经存在就不在上传。时间换空间的一个问题。解决数据库的一个问题。
- 数据库存储图片名称和路径,图片的物理地址存储到硬盘里面。分布式肯定有问题!冗余AB服务器都存一份,或者搞个图片服务器。不可取。
- 流的方式储存到数据库里面。占用硬盘资源,需要转码对数据库的IO。
-
运营系统
> 日志系统,风控系统,报表系统,调用链系统。
PS:看到电商是如此复杂是不是有点头疼,越往后业务越来越细分,运维的工作量越来越大。两个 程序员 可怕【改需求,改别人的代码】。分布式基本就是2个点,应用和数据库。
>>原创文章,欢迎转载。转载请注明:转载自,谢谢!>>原文链接地址:上一篇:已是最新文章
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Python Algorithms
Magnus Lie Hetland / Apress / 2010-11-24 / USD 49.99
Python Algorithms explains the Python approach to algorithm analysis and design. Written by Magnus Lie Hetland, author of Beginning Python, this book is sharply focused on classical algorithms, but it......一起来看看 《Python Algorithms》 这本书的介绍吧!