电商业务历史以及业务模式
萌芽期(96-99)、发展期(00-10)、稳定期(稳定至今)
98年11月:腾讯成立
99年5月:8848网成立
99年9月:阿里巴巴
00年5月:卓越网开启B2C模式
03年10月:阿里推出支付宝
10年1月:苏宁易购上线
淘宝商城是天猫的前身
12年1月:淘宝商城改为天猫
12年3月:唯品会上市
19年:天猫双十一交易额2648亿
什么是B2C?
企业对客户的一种消费模式(一般以网络零售业为主)
B2C的特点?
面向大量的消费者,网站的访问量较大,交易方式简单,对网络的并发行有一定要求。
什么是C2C?
个人对个人之间的电子商务。(地摊市场)
C2C的系统特点?
网络的访问量是重点,例如:咸鱼,58交易
什么是B2B?
企业与企业直接通过互联网进行产品服务以及信息的交换。
例如:阿里巴巴
B2B特点?
访问量相对较小,交易周期的流程,以及交易的监督相对复杂。
O2O是啥?
线上与线下相结合。(各类团购、外卖网、滴滴打车等)
针对用户的定制性服务比如:位置定位。
电商中台造成问题?(偏向于业务)
重复功能建设和维护带来的反复投资
系统间的集成和协作成本高昂
不利于业务的沉淀和持续发展
技术中台都包括啥?
![](https://i-blog.csdnimg.cn/blog_migrate/6c62d58e6baf330498cb3896d7c6e30a.png)
什么叫中间件?
中间件是介于应用系统和系统软件之间的一类软件,它使用系统软件所提供的基础服务(功能),衔接网络上应用系统的各个部分或不同的应用,能够达到资源共享、功能共享的目的。(可以理解为双向接口)
什么叫容器化?
容器化是将应用程序代码和依赖项捆绑到一个单一的虚拟包中。
什么叫docker?
Docker 是一种开源项目,用于将应用程序自动部署为可在云或本地运行的便携式独立容器。
什么叫SKU、SPU?
通俗点讲,属性值、特性相同的商品就可以称为一个SPU
SKU即库存进出计量的单位, 可以是以件、盒、托盘等为单位
在服装、鞋类商品中使用最多最普遍。 例如纺织品中一个SKU通常表示:规格、颜色、款式。
什么叫运维?
运维,本质上是对网络、服务器、服务的生命周期各个阶段的运营与维护,在成本、稳定性、效率上达成一致可接受的状态。
什么叫云存储?
云储存是一种在线的网络存储方式,也就是将数据储存在多个虚拟服务器中,这些服务器一般都是由第三方提供。
基本框架结构
![](https://i-blog.csdnimg.cn/blog_migrate/404d35c4921050d91ac3cd88a9f80bd9.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b4c594cad9bc43697e6c2ca63e80a346.png)
什么是MQ?
MQ(Message Queue)消息队列,是基础数据结构中“先进先出”的一种数据结构。一般用来解决应用解耦,异步消息,流量削峰等问题,实现高性能,高可用,可伸缩和最终一致性架构。
rabbitmQ传输?
RabbitMQ是基于信道Channel的方式来传输数据
什么是Kafka传输?
Apache Kafka 是一个开源的分布式流处理平台。
Redis
redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
什么是Jvm?
JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
什么是Oom?
OOM,全称“Out Of Memory”,翻译成中文就是“内存用完了“。
什么是Uml?
UML 是统一建模语言(Unified Modeling Language)的缩写。UML 提供了标准通用的图形化设计语言,使得在构建计算机应用时,开发团队的成员更高校直观地进行交流,用来绘制软件的蓝图。同时,UML 很好地支持面向对象的设计范式。
什么是乐观锁和悲观锁?
乐观锁首先来看乐观锁,顾名思义,乐观锁就是持比较乐观态度的锁。就是在操作数据时非常乐观,认为别的线程不会同时修改数据,所以不会上锁,但是在更新的时候会判断在此期间别的线程有没有更新过这个数据。
悲观锁反之,悲观锁就是持悲观态度的锁。就在操作数据时比较悲观,每次去拿数据的时候认为别的线程也会同时修改数据,所以每次在拿数据的时候都会上锁,这样别的线程想拿到这个数据就会阻塞直到它拿到锁。
什么是Dba?
数据库管理员(Database Administrator,简称DBA)
什么是缓存击穿?
缓存击穿问题也叫热点Key问题,就是一个被高并发访问并且缓存重建业务较复杂(意味着对数据库压力相对较大)的key突然失效了(可以理解为redis的缓存突然无了),无数的请求访问会在瞬间给数据库带来巨大的冲击
什么是缓存雪崩?
缓存雪崩是指缓存中数据大批量到过期时间,而查询数据量巨大,引起数据库压力过大甚至down机。
什么是缓存穿透?
缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,进而给数据库带来压力
什么是CDN?
CDN其全称是Content Delivery Network,即内容分发网络。
什么是lua脚本?
Lua是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放,其设计目的是为了嵌入应用程序种,从而为程序提供灵活的扩展和定制功能。
什么叫爬虫?
简而言之,爬虫就是通过不间断地访问互联网,然后从中获取你指定的信息并返回给你。
什么是Nginx缓存?
Nginx是一个HTTP服务器,它非常适合提供静态文件和代理请求。由于其异步性质,它具有轻量级资源利用率。
什么是User-agent?
User-Agent 即用户代理,简称“UA”,它是一个特殊字符串头。网站服务器通过识别“UA”来确定用户所使用的操作系统版本、CPU 类型、浏览器版本等信息。
什么是微服务?
微服务就是采用容器技术的面向服务架构
什么是Fallback?
某些核心功能,已经预测到运行时会产生某些意外,于是技术人员编写代码,补充了针对意外情况的功能,统称为fallback的功能。
什么是Nginx?
“Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务”。
从架构层面看设计模式
设计模式:是一套反复使用、多数人知晓、经过分类编目的、代码设计经验的总结。
使用场景:程序软件架构设计、软件架构设计
GOF的23种设计模式:
![](https://i-blog.csdnimg.cn/blog_migrate/d266ce33219234846bbe73a81d62f2a3.png)
设计原则特点:可扩展性、灵活性、组件化可插拔式。
单一职责原则:实现高内聚、低耦合的指导方针
开闭原则:在不修改源码的基础下改变对象的行为
里氏代换原则:继承关系的相关约束(一个可以接受父类的必然可以继承子类)
依赖倒转原则:面向接口编程或者是面向抽象编程。
接口隔离原则:将一个接口对应的功能详细化
合成复用原则:不推荐使用继承关系(抽象继承没关系),推荐使用合成。
迪米特法则:降低程序的耦合度。
设计模式的分类
创建型模式、结构型模式(将多个类组合起来来完成一个类完成不了的事)、行为型模式。
常用的是设计模式
单利模式:
涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。该类还提供了一种访问它唯一对象的方式,其他类可以直接访问该方法获取该对象实例,而不需要实例化该类的对象。
特点:
单例类只能有一个实例。
单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
优点:
在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例。 避免对资源的多重占用(比如写文件操作)。
单利模式实现的代码:
![](https://i-blog.csdnimg.cn/blog_migrate/3cdd526a9f1f6c56e09f3a3428126562.png)
![](https://i-blog.csdnimg.cn/blog_migrate/73113c5e0b46e7948b1ee011642e7aca.png)
其实单利模式多次输出的是一个对象.