本文只涉及Lec知识点
考试考不到这么多,看卷子复习
1. Lec01 E-Commerce
1.1. Commerce vs. business
Commerce:
The exchange or buying and selling of commodities on a large scale
involving transportation from place to place.
Business:
The activity of making, buying, or selling goods or providing
services in exchange for money
1.2. The definition of e-commerce
E-Commerce:
- Electronic commerce (EC)
Electronic enabled commercial transactions between and among organizations and individuals - Internet commerce (Web commerce)
The process of buying, selling, or exchanging products, services, or information via Internet - E-business
It involves using information technologies in all aspects of the business.
Eight unique features of e-commerce technology:
- Ubiquity
- Global reach
- Universal standards
- Richness
- Interactivity
- Personalization / Customization
- Information density
- Social technologies
通常电商运作流程:
- 搜索商品
- 下订单
- 支付订单
- 收到商品
- 顾客服务
通常来说,所有使用电脑的流程都算作电商
具体来说,和订单有关的流程都是电商的一种形式
EDI:Electronic Data Interchange
EDI使得电商出现在电子支付之前,EDI的标准形式是使用商业文件在公司间的交流,电子形式的文件称为 purchase orders 或者 invoices(发票)。古老但是仍然是B2B的主流
E-commerce types:根据划分方式有很多种
- Business 2 Business
- Business 2 Customer
- Customer 2 Customer
- Customer 2 Business
2. Lec02 HTTP & Server
这节lec的内容建议看点计算机网络课程和菜鸟教程
2.1. URL
一个URL地址包含
https:// | core.xjtlu.edu.cn:80/course/view.php | ?id=6040 | #section-2 |
---|---|---|---|
Scheme name | hier part (host name, port & path) | Query String | Fragement |
2.2. 网络结构
2.3. MAC 、IP地址
MAC address | IPv4 address | IPv6 address |
---|---|---|
48 bits | 32 bits | 128 bits |
链路层link layer | 网络层Network layer | 网络层Network layer |
物理地址 | 逻辑地址 | 逻辑地址 |
固定,由生产厂商确定 | 可以根据网络变动 | 可以根据网络变动 |
- | 十进制表示dec | 十六进制表示hex |
如00:0c:f5:09:56:e8 | 如150.60.0.0/24 | 如3ffe:f200:0234::/48 |
2.4. 集线器,交换机,路由器
集线器、交换机、路由器的工作原理及其区别
Soho router: 集合了交换机,AP,DHCP,路由的功能
2.5. 域名与DNS
Domain name 域名 & DNS解析:
通过DNS服务把域名解析为IP地址
www.taobao.com->221.229.203.214
2.6. TCP,UDP,HTTP
2.7 渲染网页 Html,Css,Js
Html基础
Css基础
Js基础 ----V8引擎
在线尝试html+css+js
2.8. API
API(Application Programming Interfaces):
- API提供给js额外的能力
- API是已经被构建好的代码块,允许开发者来扩展或使用
- 类似于开发套件,使用速拆支架来搭建书柜比从原木开始制作要容易
- 浏览器原生支持API,并且有第三方的API可以使用。
Lec03 Dynamic HTML by Server page
3.1. Server
常见web server:Apache,Nginx,gunicorn,jettty,Apache Tomcat
直接通过网络访问数据库是很危险的,浏览器也没法直接解析数据库数据,因此需要web server来与数据库交互。
url不同部分的意义:
如果手动给每个产品页编辑html,很显然是不现实的,因此动态网页(frame+data)的形式逐渐流行。
A dynamic website is the webpage on the server side where different contents are shown when assessed at different timings.
Delphi——一个用于数据库编程的软件
CGI——Common Gateway Interface,处于Web server和程序之间的接口,可以是C/C++,Perl,Java
CGI程序可以访问数据库里的数据
Java servlet——一种Java语言的CGI,为了实现动态html内容,需要写一堆的System.out.println()
ASP(Active Sever Page), 使用VB和JS生成动态网页内容
JSP(JAVA Server Page), 使用HTML+JAVA
Apache Tomcat:
(一种基于java的服务端软件,可以运行servlet和JSP,可以与Apache server一起工作。静态服务器(Apache,Nginx)负责图片等静态资源,动态内容由Tomcat提供)
PHP:使用PHP,脚本语言转成html,Apache有插件支持PHP(XAMPP是一个更好的选择)
3.2. Database basics
数据库也是个软件,是一个信息的集合体,数据库通常由一个数据库管理系统(DBMS,database management system)控制。整个数据库系统由数据+DBMS+数据库应用程序组成。常说的数据库其实是DBMS
SQL是一个编程语言,用于关系型数据库的控制
ACID:
- Atomicity原子性 − ensures that all operations within the work unit are completed successfully. Otherwise, the transaction is aborted at the point of failure and all the previous operations are rolled back to their former state.
- Consistency一致性 − ensures that the database properly changes states upon a successfully committed transaction.
- Isolation隔离 − enables transactions to operate independently of and transparent to each other.
- Durability持久性 − ensures that the result or effect of a committed transaction persists in case of a system failure.
主键Primary key:确保数据唯一
外键Foreign:确立了链接关系
Index and search:
B树和B+树:小的在左分支,中间的在中分支,大的在右分支
Entity Relationship Diagram实体关系图ER图:
DB是一个客户端服务端风格的软件,DBMS作为服务端。
PHPMyAdmin是一个图形化的控制界面
MySQL Workbench是一个DB工具,支持双向编辑数据库和ER图
Navicat:也是DB工具
数据库种类:
数据库分为SQL数据库和非SQL数据库(键值对,图,文件资源等)
其中NoSQL指的是Not only SQL,而不是No
一些商业化的DBMS:OceanBase,TDSQL,POLARDB,CynosDB,GaussDB
和数据库交互的手段:GET或POST请求携带变量,由Apache接受并查数据库
Lec04 Typical project life cycle
通常项目的生命周期
4.1. Research or Analysis
分析Analysis总是在设计Design之前的步骤。
- 创新Innovation总是从一个愿景vision开始。
- 愿景Vision可以是 "me2 "类型,也可以是革命revolution类型。
- Me2和革命之间的主要区别:
- 对于 "me2 "案例,需求是存在的。 可以参考许多样本。主要工作是收集数据并把它们放在一个计划中。
- 对于革命来说,它更多的是 “”following your heart”。通常情况下,创始人会想出一些新的东西,在未来可能会成为流行的东西。
Revolution or dream?
研究或不研究?
- 这取决于我们如何定义 "研究"。
- 创新开始于一个愿景,只有灵魂才能引领它(什么玩意)。
- 你永远不能指望 "顾问“consultants "能给你一个**创新想法**的正确答案。
- 而**市场研究**可以在一个成熟的市场中发现潜在的陷阱。
- 你需要先走一步,因为你永远不会准备万全!!!!
简单来说就是研究能发现潜在危险,但不能一直研究下去,创新想法是研究不出来的。
Research What?:
外观,有趣的灵魂,用户的潜在能量。。。
Data Source:
上市公司 public companies的报告
- 每个上市公司都会定期发布报告。
- 这是一个可靠的来源,可以得到许多有用的信息。
- 你可以尝试根据这些数字制定一个计划,以判断你的计划的潜力。
- 你也需要在其他人之前清楚地了解这些信息
Outcome of the research:
商业计划书A business plan 是一份正式的书面文件,包含企业的目标,实现这些目标的方法,以及实现目标的时间框架。它还描述了企业的性质、组织的背景信息、组织的财务预测,以及为实现既定目标而打算实施的战略。
4.2. Design
设计什么?UI,IxD,IA,UX
UI,user interface:用户界面
IxD,interaction design:交互设计,定义交互系统的结构和行为
IA,information architecture:信息架构,信息架构是帮助人们在现实世界以及网络上了解自己的环境,找到他们要找的东西的学科
UX,user experience:
在数字设计领域,用户体验指的是影响用户与数字产品互动的一切。
当人们使用一个产品时,他们通常根据以下标准来评价他们的体验:
- 价值。这个产品能给我带来价值吗?
- 功能。这个产品能用吗?
- 可用性。它容易使用吗?
- 一般印象。使用起来愉快吗?
用户体验不是唯一的,它更像是指导UI、IA和IxD的一个灯塔。
UI,UX设计工具:Sketch、Adobe XD、墨刀、Mockplus、Axure RP
产品需求文档(PRD, product requirements document)定义了特定产品的需求,包括产品的用途、特性、功能和行为。它是业务和技术团队帮助构建、发布或营销产品的指南。
PRD不仅仅是UI/UX,它应该解决5种类型的需求:
- 业务需求 Business Requirements
- 市场需求 Market Requirements
- 功能需求 Functional Requirements
- 非功能需求 Non-Functional Requirements
- UI/UX需求 UI/UX Requirements
非功能性需求:比如 Initial investment ¥300, 000, 000,Tickets per day 12, 000, 000。和软件主要功能不直接相关,但是关系到软件的可移植性,可维护性,观感性,易用性,可执行性等。
concurrence并发,可以体现web server的性能,越大越好
4.3. Develop and Test
开发这个流程不只是写代码,测试在写代码之前
不同阶段的测试的意义:
测试的主要内容:
- Functional test: pay attention to whether the function is correct.
- Usability test: pay attention to whether the product is easy to use.
- Compatibility test: focus on whether the product is applicable to multiple platforms.
- Reliability test: pay attention to whether the product is stable and reliable.
- Security test: pay attention to whether the product has vulnerabilities.
- Performance test: focus on whether the product can run efficiently.
测试样例:
Fake,Stub and Mock:
- 每个单元都需要输入/输出
- 对于单元测试,你需要用模拟的数据作为输入来 “欺骗它”
- Fake、stub和mock是这种模拟的术语。
Web compatibility兼容性代表能在多少个设备上运行的能力
Selenium可以用作自动化网页测试
Selenium Grid可以用一个Hub去测试许多个节点
在写代码之前做设计:
High level design:
Low level design:
4.4. Implementation or Operation(代码时间~)
Operation:
版本控制:
多环境控制:
通过Jenkins持续集成与部署
A/B test(Both are in production)
不同的用户可以看见不同的内容,通过反馈决定搞哪一种(例如B站的新旧页面)。
Lec05 Database clusters and Cache
数据库缓存cache机制:命中缓存读缓存,未命中缓存就从数据库里读,然后写入缓存
由于web server和DB software都会花费服务器的硬件资源,所以那就会有一个瓶颈在那里。
服务器的特点:
- CPU的核心和内存很强大,但是依然有限制
- 对于容灾处理很到位(Very stable by redundance):如断电时的应急电源,硬盘的多重备份等
由于单服务器往往会有比较低的上限up-limitation,比如Concurrent user, Response Time, Throughput,QPS (Query Per Second), TPS (Transaction Per Second)。
除了服务器的硬件设置,还有软件限制Software limitation factors:比如多线程下的全局变量访问使用的锁问题,以及部分软件用不了那么牛的硬件(比如MC就只能用一个CPU核,一核有难,多核围观)
因此,催生出了分布式——用子服务器放不同的服务
分布式带来了物理上的冗余redundance,更加保证可靠性
Host standby
解析两个DNS,分别是两个服务器。两个服务器承担相同的功能,如果主要的那一个挂了,可以切换到第二个
VRRP(Virtual Routing Redundancy Protocol):
两个 "服务器 "有相同的配置。 备用的一台将检查活动的一台的健康状况。 一旦活动的那台挂了,备用的那台就会接管网络流量。 典型软件是:keepalived
Dual master MySQL:
两个MySQL,运行的这个不断保存binglog文件,然后万一挂了,另外一个使用Binlog转存文件然后补上。
Binlog是应用于DB的原始命令(就是备份文件)。 Binlog被用来复制数据。 对并发性能没有贡献。 在切换过程中,它将面临数据不一致的问题。
另一种Mater/Slave MySQL主从复制,对于电商应用,多数网络请求是读取页面,所以设置几个从属服务器用来专门供读取(从),另设置一个服务器用来写入(主),写入后同步到另外几个slave上(主从复制)
Proxy the cluster为集群设置一个代理:
由于需要区分读请求和写请求,在用户与服务器中设置一个反向代理服务器,它会区分用户的每一次请求,并且将这些请求发给不同的子服务器,用户只需专注于与反代服务器交互就行。
5.1. Data inconsistent
如前面主从复制所讲,用户往G1节点写入数据,G1会自动同步G2,用户随后任选G1G2其一来交互。
如果因为某些原因同步失败,那么用户可能选G2后返回的就是老的数据。
5.2. CAP theorem
Brewer指出任何分布式的数据存储只能提供以下三种保证里的两种。
如何在CAP中做抉择?
It depends on scenarios:
• Read/write master database scheme
• Delay query scheme
• Judge the active/standby non-delay scheme
• Determine synchronization site scheme
• Waiting for synchronization site scheme
• Semi-synchronous replication scheme + waiting point
• Group replication MGR scheme
如何在外部资源平台和自己搭建数据库做选择:
- 云平台拥有一站式解决方案
- 以独立性为代价
5.3. 关于数据库的设计
Table division:
查询一年中的某一天,在一张表里面放365天 变成 按照月份把他们放到12个表里,做二级查询
Horizontal partitioning:
同一张表中可能多行,将这多行按照规则分别划分到多个数据库里-》代价:更复杂的SQL声明
Vertical partitioning:
将部分热门列放入高读写的数据库里,将冷门那些数据列放入低写高读的数据库里。
Database division:
用多个数据库,分别存储不同的数据(订单&价格&库存由原先一个数据库存变成三个数据库存)
5.4. HDFS
Hbase is a native distributed NoSQL database based on HDFS
DBA(Database Admin):设计数据库表的职业
Memory cache:内存作缓存(如手机后台)
Different storages:HDD机械硬盘SSD固态硬盘
Future Computer:一个是内存运算单元,一个是Optical Communication for Energy Efficient Long Reach(看看就行)
业内常用做法是使用Redis做缓存层,Redis是一个基于内存的键值对数据库。内部通常存储一些热门数据,用于快速查询并响应,同时支持设置过期时间,用户刷新缓存。
Redis同样支持主从复制,Redis的集群管理,:
Redis虽然经常作为缓存层在内存里保存东西,但它也可以进行持久化persistence并存储到硬盘里,用于容灾或干脆作为不太靠谱的存储数据库用。Snapshot是对“数据”的存储,aof是对“写入语句”的存储。
一些issue和解决方案:
乐观锁一般认为修改数据不会导致冲突,如果数据在最后更新时候冲突了,就让用户去check。
如何看数据有没有冲突(或者自己的数据是否过时),给每个数据添加version字段,每更新一次数据,就更新version。拿数据的时候也保存下version,如果最后数据更新的时候version对不上,那冲突就存在,让用户去选择如何解决
设置写操作会强制让该数据的缓存失效也是个不错的办法。不过还是会有bug,No perfect solution
5.5. 高并发带来的思考
如果黑五或者双十一,会有一个高峰,此时如果采用悲观锁Pessimistic Lock,会导致用户等待时间剧增和堆积。
悲观锁:悲观的认为一旦修改数据,冲突就会发生。所以为了防患于未然,会在数据修改前上锁,修改完解锁。
6. 高流量下的网络集群Web clusters for high flow
之前提到的手段,比如:将web server与DB server区分开
之前提到的issue,比如:每种web server的性能有很大差异
6.1. Nginx
Nginx - the king of HTTP Proxy:
Nginx是一个网络服务器,可以提供静态内容。•Nginx使用多线程multi-thread来获得高性能。
代理网络服务器Proxy the webservers:
Nginx根据路径设置代理规则。网络服务器只向用户发布一个域名,用户访问这个代理即可。
上图有4个(可以是任意数量)服务器,由Nginx负责代理。
Balancing techniques:
以下为反向代理服务器选择哪一个服务器处理请求的方法们:
Round Robin轮询(默认方法):负载平衡器依次运行上游服务器列表
HASH:计算一个哈希值,该值基于你指定的文本和NGINX变量的组合
IP HASH:哈希值基于客户的IP地址
最少连接:比较当前的活动连接数,将请求发送到连接数最少的服务器。
最少的时间:结合每个服务器的两个指标–当前的活动连接数和过去请求的加权平均响应时间
此外,还可以给不同的服务器设置不同的权重,例如给负载能力较强的服务器分配较多的请求
Cookies and Session:
Http是无状态的,一个网站需要cookie/session对来保持它的状态。 如果使用了一个以上的后端服务器,服务器则需要共享会话,否则就会丢失用户访问网站的上下文。 Redis是会话共享的一个选择(有过期机制)。
Cookie会随着请求一起被发送,其中包含了一些用户信息或数据。
Session的实现本质也是cookie,只不过存储的是数据库的下标或用户信息的键,数据的值还是在服务器内(键值对)
Health check:检查后端子服务器们是否能正常工作
HTTP请求:
Data frame:https://blog.csdn.net/hellozhxy/article/details/80280197
网络的每个层都做了层封装,消费了一些资源,Nginx属于应用层,比TCP层低效
Wireshark是一个抓包工具,可以用来分析
Nginx的上限:取决于多个因素,可能最多支持3w个并发请求(con-concurrence),是在http层上进行处理,为了更快,可以考虑在网络层上network layer进行处理
6.2. LVS
LVS(Linux Virtual Server):
LVS是Linux系统的一个内核服务 - LVS与真正的服务器共享VIP - LVS将请求(TCP或UDP)包重定向到真正的服务器 - 基于IP+端口的代理规则 - 网卡的带宽是瓶颈。
RS(Real Server):实际处理请求的服务器
6.2.1. LVS - NAT mode
NAT:Network Address Translation
实际服务器将LVS服务器作为网关
请求和响应都走LVS
LVS compter需要至少两个网卡(network card),连结internet和intranet,并且可以设置多个代理群组。
包重写流程如下图:
6.2.2. LVS - DR mode
DR - Direct Route
请求的内容通过LVS分发,处理完请求后,Real Serer直接响应给用户内容
相当于尽管请求是从LVS来的,欺骗RS请求是从真正的用户那直接来的,这样RS返回时直接向真正的用户返回
6.2.3. LVS – Switch & ARP
交换机和地址解析(ARP)
6.2.4. Localhost
The normal network card is called an Ethernet device
Loopback is an "virtual” network card type device.
Every traffic that you send to loopback will come back.
回环地址如127.0.0.1
6.3. Nginx vs LVS
6.4. Nginx + LVS
6.5. Other choices
HA proxy and f5
DNS balance: 为不同位置的用户响应不同的站点(通常是最近的),通常被全球性应用所使用
CDN(Content Delivery Network):基本同上,不过分发的是静态内容(如视频,图片)
Use CDN for static resource
Use DNS, LVS, Nginx clusters to support the dynamic flow
6.6. Edge vs Cloud
边缘网络和云的区别
CDN是一个典型的边缘应用
Zabbix:一款监控服务器状态的软件
Lec7 Split the code & MVC
MVC架构,正如之前将数据库分解,对网络请求的层层封装一样。对于项目也需要进行功能上的分层(通常这也带来了项目的文件夹分层)
以下可以理解为从初步思想一步步地达到MVC
7.1. DAL
DAL:Data Access Layer
数据层绑定视图层组件
视图层显示数据
ORM(Object Relational Mapping)对象映射:
数据在应用里视为对象使用,在数据库里每行存储
BLL Business Logic Layer(应该是叫业务层吗):
BLL分离了业务逻辑和数据存取
业务逻辑举例:”如果用户是第一次购买,则有新客优惠;如果用户用了满减卷,则不能用折扣卷;如果用户操作有误,返回错误提示…"
7.2. MVC
上述三个layer的思想(左)指将业务逻辑层从界面逻辑中拆除
不能与MVC 一 一 对应
MVC是一种架构,有助于将应用程序分割成逻辑单元。
MVC比Web技术更早。
模型Model代表一个独特的实体–它可以是一个单一的对象,或者更可能是一个结构。通过这种方式,数据的处理只在模型中进行,这保证了内部数据的一致性。
视图View是用来呈现用户界面的图形可视化的。为了看到应用对象的状态,视图通过控制器查询模型。
控制器Controller提供了用户界面(视图)和应用处理逻辑(模型)之间的联系。从某种意义上说,控制器使用户可以进行修改并看到结果。
MVC只是一个指导拆分的理论。而拆分意味着复杂和成本。是否完全遵循它,取决于许多因素。
MVC也不止应用于Web应用,也适用于端应用,但它应当在同一个系统中。
下图是一个Spring MVC的说明
In MVC, classes implementing your business logic (not only DAL) are called models
code snippets rendering HTML pages are called views
the classes responsible for interacting (separate with webpage) with user are called controllers
Controller在python里的实际应用(记忆中叫路由?
7.3. MVT
MVT采用了一种略有不同的方法,由Python Django引入。
当用户发出HTTP请求时,相应的视图会对模型执行查询,并从模型中收集结果集。
然后,View将结果填充到模板Template中,并将其发送给用户。
两个架构:
SSH:Spring, Struts2 and Hibernate
SSM:Spring, SpringMVC and Mybatis
Hibernate and Mybatis:
两个都是在数据库和业务层的中间层
经典的MVC模式通过管理应用程序的状态来工作。
当用户执行一个动作或提出一个请求时,控制器Controller中的一个动作被调用。
然后,控制器要么告诉模型Model进行修改并更新视图View,要么返回一个基于模型的视图。
数据更新导致控制器改变视图
7.4. AJAX(Asynchronous JavaScript And XML)
异步请求,ajax实现了单页面的局部刷新,比如淘宝改变商品规格,它的显示的价格也会相应改变,此时整个网页是不用刷新的。
通常,使用Ajax去请求后端应用程序提供的API(Application Programming Interface)来获取信息
Rest(Representational State Transfer) API:一种构建API的风格,可以理解为get请求用于获取,delete请求用于删除,post请求用于修改(不过我个人还是喜欢全天下都用post
Api测试工具:Postman,APIfox
XML:结构化文档
JSON:javascript对象
前后端划分(Front-end & Back-end split):
靠近用户侧的是前端,API在中间,靠近数据库侧的是后端
在后端一侧,返回给API的数据属于View部分,在前端一侧,从API接受的数据属于Model部分
前端框架:Vue,React,Angular
前端框架的一个功能是url路由,既同一个页面,通过不同的url可以路由到不同的内容。
Vue——MVVM(ModelView-ViewModel):
视图层变化,数据进行变化;数据变化,同时视图会变化
React+Redux:
Redux实现了状态(数据)的存储与更新,可以看作是前端项目的一个数据中心
SPA(SIngle Page Application单页面应用)与传统网页:
主要是后续Ajax和post的区别
Node.JS:Javascript运行环境,可以用于前端的项目的构建打包
Multi Front-APP age:微信小程序,QQ应用…
技术永远在进步
Lec8 Microservice
之前几个Lec讲过,可以将项目划分为不同的子项目
From One to Piece:
如何划分,从纵向分割(Vertical separation)
不同的函数可以封装进不同的组件里,每个组件可以作为一个单独的集群来部署
DO NOT RE-INVENT THE WHEEL
不要重复造轮子
8.1. RPC(Remote Procedure Call)
1984年,Birrell和Nelson设计了一种机制,允许程序调用其他机器上的程序。 很明显,远程程序调用与本地程序调用在底层实现上是不同的。 RPC可以通过TCP或HTTP层。 HTTP API是RPC的一种。
当服务以集群的形式存在,就需要一个路由,来承担代理的身份,使工作变的有序,并减少多余的通信管线。
8.2. SOA(service-oriented architecture)
面向服务的架构(SOA)是一种软件开发模式,它允许服务在不同的平台和语言之间进行通信,以形成应用程序。
在SOA中,一个服务是一个独立的软件单元,旨在完成一项特定的任务。
面向服务的架构允许各种服务使用低耦合( loose coupling)系统进行通信
SOA + ESB
SOA是一种集成架构风格和企业范围内的概念
ESB是一种实施架构。它是一套规则和原则,用于通过类似总线的基础设施将众多的应用程序整合在一起
通常情况下,企业项目使用ESB解决方案与SOA的设计
以下优点:
SOA vs Monolithic:
微服务是SOA的一种实现形式,一个微服务架构把每个功能都作为一个单独的服务。然后用多个服务器部署多个服务组,达成规模扩增
一个monolithic应用把所有功能作为一个服务,然后在多个服务器部署多个应用,达成规模扩增
** ESB vs Microservice**:
ESB自顶向下设计top-down
SOA自底向上设计bottom-up,一个经典的用例是微服务
8.3. MSA(Microservice Architecture)
Using API gateway to replace ESB(使用API网关取代ESB)
Build the necessary fundamental functions also as services(将必要的功能也作为services部署)
抹除了中心管线
问题:
东西多了造成混乱,排查bug时也变得困难
• Config management
• Service Registry and Service Discovery
• Deployment
• Security
• Design for Failures
• Inter-Service/Process Communication
8.4. Apache Dubbo vs Spring Cloud
Dubbo use zookeeper for registry and discovery
8.4.1. Spring Cloud
Spring cloud is from Netflix and be famous “Spring” with mature community,Build-in services for fundamental functions,Spring boot is a new way to pack each service with a web server
Spring Cloud-configuraion service:有一个bootstrap.yml文件管理项目配置
Spring Cloud-service registry and discovery:动态注册和调用服务
Spring Cloud-Zuul & Ribbon:Zuul管理对外开放的服务和供内部服务使用的服务,Ribbon用于负载均衡,都是内建的微服务
Spring Cloud-Authorization:身份认证,使用token
- Oauth2:
OAuth 2.0是业界标准的授权协议。 OAuth 2.0侧重于客户端开发人员的简单性,同时为网络应用、桌面应用、移动电话和设备提供特定的授权流程。 - JWT token:
在服务端的session的key,通过这个key就可以取到用户的信息。
Spring Cloud - Feign:用于内部的调用,也用于负载均衡
Spring cloud – Hystrix:health check
Spring cloud – Turbine:to see more than one stream
Spring cloud – Sleuth + Zipkin:绘制调用细节;跟踪请求
Spring cloud – E L K:log输出
MQ(Message queue)消息队列:
解耦了生产者和消费者(消息被添加到队列里,消费者从队列里取消息进行消费。
MQTT(MQ Telemetry Transport) for IOT:大型处理中心
Spring cloud - publish:每个服务都是jar包,放到服务器里依次运行即可
Prometheus – monitor the mesh:优化工具,收集信息并自动调整服务的规模
8.5. Docker
一个虚拟运行环境,可以理解为虚拟机
k8s:docker集群的管理工具
Jenkins:CI/CD工具,根据不同的触发手段(比如仓库主分支的push),触发docker的构建和推送
MSA:微服务架构
8.6. Spring cloud vs k8s
8.7. Service mesh
mesh相当于中心,提供服务本身的配置,服务间的通信,服务对外的通信…
Without a service mesh,
… each microservice implements business logic and cross cutting concerns (CCC) by itself.
With a service mesh,
… many CCCs like traffic metrics, routing, and encryption are moved out of the microservice and into a proxy.
Istio是这种思想的一款应用,通过pod(抽象成web server)进行服务分发,不同的版本不同的编程语言可以同时被使用
Lec9 Search Engine and Marketing
图书馆找书:根据不同的分类找
Web spider:网络爬虫
一些issue:根据分类或某些关键词还是很难找
目录Content与索引Index
索引是一种系统的安排,向读者提供一个简明的列表,这样他们就可以发现特定的主题是书中出现的术语,并使其更容易访问。术语按字母顺序排列,列出名称、地点、事物和页码,这为相关术语提供了交叉参考,是书籍不可或缺的一部分。
将数据进行文字处理,划分成不同的Index,根据不同Index找就很快了
9.1. SE(Search Engine)
有三个步骤:Crawling-》Indexing-》Ranking
Elastic Search:通过IK分词器,按照颗粒度给内容分词,每个词作为Index
如何给搜索出来的结果排序?
一些因素:
SEO and SEM:
SEO:搜索引擎优化,旨在更好地提供用户想要的内容 Organic
SEM:搜索引擎营销,旨在恰品牌方钱钱 Paid
Marketing vs advertisement:
Marketing:提高品牌影响力,确保公司能处在恰当的市场中,Product,price,place,promotion,主要关注How to connect the product/service with the end user,
Advertisement:促使用户购买产品的手段
Promotion(促销)是一场综合营销传播活动。促销包括各种活动,如广告、销售、促销、公关、直销、赞助和游击队营销。
9.2. Prodcut & Price & Place
Prodcut产品: 在准备适当的宣传活动之前,营销人员需要了解所销售的是什么产品,它如何从竞争对手中脱颖而出,该产品是否还可以与次要产品搭配,以及市场上是否有替代产品。
Price价格: 在确定价格时,公司必须考虑单位成本价格、营销成本和分销费用。公司还必须考虑市场上竞争产品的价格,以及他们建议的价格点是否足以代表消费者的合理选择。
Place地点: 地点指的是产品的分销。关键的考虑因素包括公司是否将通过实体店面、在线或通过两种分销渠道销售产品。当它在店面销售时,它得到什么样的实体产品位置?当它在网上销售时,它将获得什么样的数字产品位置?
Offline: 线下售卖,和地点有关,顾客线下逛
Online:线上售卖,和信息有关,顾客通过搜索浏览
9.3. 说回搜索引擎
什么是SEO?
SEO是修改网站以提高其在搜索引擎有机(与付费)、基于爬虫的列表中的排名的行为
有机搜索列表是如何工作的?
蜘蛛或爬虫是搜索引擎的一个组成部分,它通过自动 "爬 "网络来收集列表,爬网页的链接,复制网页并将其存储在搜索引擎的索引中,基于这些数据,搜索引擎对网页进行索引并对网站进行排名
SEO stategies/techniques 正向提高SEO的东西:
- Domain name strategies:域名的品牌识别度
- Liinking strategies:网页被引用次数(inbound links)越多,SE越高
- Keywords:关键词,在ranking里最重要
- Title tags:网站的标题以及标签,将会在搜索结果里大体字表示
- Meta description tags:元信息描述tag
对SEO负向影响的东西:
- Flash and shockwave
- Image only sites
- Image maps
- Frames
- Misspellings, JavaScript or HTML errors
SEM( search engine marketing):
SEM是通过搜索引擎购买付费列表来营销网站的行为
什么是付费列表 paid listings?
这些是搜索引擎出售给广告商的列表,通常是通过付费位置或付费收录项目。
相比之下,Organic listing列表通常是不出售的
付费收录Paid inclusions
广告计划,其中网页被保证收录在搜索引擎的索引中,以换取付款–不保证排名–在每次点击Cost Per Click(CPC)的基础上付款–广告商在CPC的基础上支付被收录在目录中的费用,或在不保证具体位置的基础上付款
付费放置 Paid placements
广告计划,其中的列表被保证出现在Organic有机列表中 - 费用越高,排名越高 - 例如赞助链接和谷歌的广告词 - 可以从门户网站或搜索网络购买 - 搜索网络通常设置在拍卖环境中,关键词和短语与每次点击成本(CPC)费用有关。
Benchmark for a web/app:
For pc web
• PV: page view
• UV: unique visitor
For mobile app
• DAU: daily active user
• MAU: monthly active user
ROI : return on investment
GMV : Gross Merchandise Value is a metric that measures your total value of sales over a certain period of time. GMV=sales + cancel order + reject order + return order
Brand:keep your promising
品牌一词是指一种商业和营销概念,帮助人们识别一个特定的公司、产品或个人。品牌是无形的,这意味着你无法实际触摸或看到它们。因此,它们有助于塑造人们对公司或其产品的看法。
未来的SE:chatGPT
Lec10 Security in general
DDOS:分布式拒绝服务攻击,就是疯狂请求服务器
Cheatings:虚假邮件
Crack the Wi-Fi:黑入wifi,获取密码
Collision attacks:试图用常用密码攻击
Accidence:由于意外
10.1. CIA triad
信息安全三要素
Risk =Threat Probability * Vulnerability Impact
风险是威胁概率和脆弱性影响的组合。
换句话说,风险是指威胁方成功利用漏洞vulnerability的概率。
Threat:
威胁是任何类型的危险,它可以破坏或窃取数据,造成混乱或造成一般的伤害。 - 威胁的常见例子包括恶意软件、网络钓鱼、数据泄露,甚至流氓雇员。 - 或一组潜在的事件,在这些事件中,威胁方(threat agent)利用系统的一个特定入口点对资产造成威胁事件
Vulnerability:
漏洞是硬件、软件、人员或程序的弱点,可能被威胁者利用,以达到其目的。 - 许多有名的漏洞,如2020年的Log4j。 - 漏洞可以通过通用漏洞评分系统或CVSS来标记。 - 它不仅是硬件和软件,而且是人。 - 一个尚未修复的漏洞,被称为零日漏洞。
10.2. Against the Risks
Infrastructure level:异地多活,不同的地区多个服务器
Application level:软件层面的防范手段
Vulnerability Assessment Scanning:漏洞扫描
Penetration Testing:渗透测试
Network security level protection:网络安全等级保护,没有绝对的安全,做好最大的防护。
防护等级如下
10.3. Basic technologies
DDOS filtering:给web server与用户间加个DDOS保护设备
Encoding, Hash and Encryption:通过编码加密
提到了base64(为了传输二进制流),hash encoding,哈希是消息摘要的数学函数,它将任意长度的输入转换成固定长度的输出。根据设计,哈希是单方向的,没法从哈希值回到数据本身。数据的一个小变化就会导致产生一个新的哈希值。
哈希值可以用于判断下载下来的文件的完整性
Hash: MD5(Message-Digest Algorithm 5), 信息学中使用广泛的哈希算法这个算法具有很多性质:压缩性: 对于任意长度的输入, 可以产生出一个128位(16字节)的散列值
(Secure Hash Algorithm,缩写为SHA)是一个密码散列函数家族,是FIPS所认证的安全散列算法。能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法。https://www.bilibili.com/video/BV1Ua411679P
不要在数据库里明文(plain text)存储密码。
密码仅供比较。•在设计上,即使是管理员也不应该有任何机会以明文形式访问客户密码。•HASH是一个不错的选择,但它不是一种加密算法。•例如,您可以很容易地阅读123456。但你可能不知道“8d969eef6ecad3c29a3a629280e686cf0c3f5a586aff3ca2020c923adc6c92”是什么意思。•它是SHA256(“123456”)
哈希碰撞(hash collision)攻击,国内大牛王小云
Rainbow table用于哈希碰撞常用密码,随机的Salt用于给密码的哈希过程加料,使彩虹桌难以比对哈希值
10.3.1. Encryption Encoding加密编码
加密的目的是只允许被授权的人阅读信息。 - 加密需要编码,解密需要解码
上面提到的base64是编码的一种方式,不属于加密
HTTPS:加密http通讯,http中的信息都是明文的。https就是给http协议加了把锁
Middle:代理人攻击
Lec11 Encryption and Decryption
加密encryption是对可读文本进行加扰的过程,使其只能由拥有密码或解密密钥的人读取。
对称和非对称加密体系Symmetric and Asymmetric Encrypt/Decrypt
11.1. Modular Exponentiation algorithm
11.2. Diffie–Hellman algorithm:
11.3. RSA
依稀记得以前哪门课讲过来着,计算机网络组成原理
一个RSA例子:
• For key pairs {a, p} and {d, p }, we would publish the {a, p} and keep {d, p } as secret.
• We get d from d = (kφ§+1)/a easily.
• Eve need to know φ§ to get d.
• So Eve need to find out the m and n which fits p = m * n
11.4. ECC (Elliptic Curve Cryptography)
同样安全等级下,比RSA要快
11.5. Summary
不同算法的安全性是不能直接比较的。
这种比较是基于相似的MIPS破解年限。
在相同的密钥长度下,对称加密比非对称加密更难破解。
对称加密的首要挑战是如何在Alice和Bob之间分享密钥。
所有的密钥都可以被破解——主要问题是关于 “计算资源”,相比于庞大的破解成本,东西是否值得被破解?
新技术可能使某些算法不再安全。
一个好的应用总是结合不同算法的优势。
一个有点意思的知乎回答,算是总结和引申,https://zhuanlan.zhihu.com/p/222217422
Lec12 HTTPS - an cryptography application
Symmetric and Asymmetric Encrypt/Decrypt
对称与非对称加密解密
Full disk encryption全盘加密
SSL/TLS for communication:SSL加密通讯
- 对称加密是快速和安全的,但难以分享密钥。
- 如果我们能找到一种分享密钥的方法,我们就能建立一个安全通道。(通常是带外的方法,比如地下组织传纸条)
- DH是一种安全的协商密钥的方式,但不能对抗中间人。
- RSA/ECC可以共享公钥,它是协商密钥的潜在候选人。
12.1. Asymmetric Encrypt/Decrypt非对称加密解密
通过公钥私钥的方式进行加解密,速度有点慢,需要提前存储好公钥
一些Issue:
• How to safely collect public keys of Alice, Ted, Mike and so on.
• How to trust{5,2407}is a public key of the target web that never visited before?
Certificate Authority证书签发机构(CA):
由一个第三方保存公钥及其对应身份
网站管理员创建密钥对,仅将包括公钥在内的CSR发送给CA进行注册。
CA需要验证CRS申请的权限
验证(5,2407)确实是该网站的公钥——拿这公钥计算一段数据的哈希值,然后去证书机构计算这个网站注册的同样的哈希值,两结果之间作比对。
数字签名:
确保发送方的私钥能够与签发机构注册的公钥对上
PKCS (Public-Key Cryptography Standards):许多标准
Challenge for CPU time:加解密需要大量计算
12.2. Combine the symmetric and asymmetric algorithm
SSL Handshake
12.3. 一些issue
密钥泄露问题,解决方案:
Actual HTTPS(SSL Handshake Diffie-Hellman)
SSL refers to Secure Sockets Layer whereas
TLS refers to Transport Layer Security.
Basically, they are one and the same, but, entirely different.
SSL/TLS also have Vulnerability. For example, SSL3.0 cannot against POODLE attack.
12.4. Cipher suites
There are four parts in the cipher suites
Each part has many algorithm choices
D-H can also use EC algorithm, then its name would be ECDH
MAC - Message Authentication Code
• In TLS, MAC algorithm of symmetric encryption is also a part of cipher suite.
• MAC means how to check the integrate of a message, normally a HASH function or HMAC.
TLS不止可以应用于HTTP,也可以应用于FTP或SMTP等,是结合了对称与非对称的做法
12.5. 我们安全了吗?
使用上述手段并不能确保网络安全——如果CA被黑了
或者,万一密钥被公开,以前的所有用此加密的文件都将被破解
密码Password:使人能够通过或获得入场券的东西
证件Credential:表明某人有权获得信贷或有权行使官方权力的证词或认证文件
MFA(Multi-Factor Authentication):人脸验证,短信验证码之类
MFA是一个安全系统,它需要一种以上的认证方法来验证用户的登录或其他交易的身份。
通常情况下,使用2个因素。2FA(双因素认证)是MFA的一个子集。
Public Key Infrastructure(PKI) can also used at client side.
• Normally the private keys are protected by chips
• CA play an important role in USB stick for PC application
一些对密码的建议:
• Weak password is the NO.1 factor.
• Do not install “dangers” APP/software, like 180 * 2.
• If you have to, use the “dangers” software in VM.
• Do not use the same password for different website/APPs, at least add some “salt”.
• Do not register account in “unsafe” websites, for example, those do not use 2FA.
• Do not share any password.
然后讲了讲Block Chain
Lec13 Legal, ethical and social issues
Trolley Problem:轨道难题
解决方案?:• Social contract theory• Virtue theory• 无为• 齐身修家治国平天下…
What is the law?
• Law is a system of rules created and enforced through social or governmental institutions to regulate behavior, with its precise definition a matter of longstanding debate.
• Law has been variously described as a science and the art of JUSTICE.
Law and ehic:
道德和法律几乎存在于社会的所有领域。它们每天都在支配着世界各地的个人行为。 - 法律强制执行我们应遵循的行为。 - 而道德则建议我们应该遵循什么。
Battle between Giants
Do not be evil
The importance of evidences:
Truth in the court may not be the truth in the life. How to let the court believe your evidences?
Digital evidence:
数字证据很脆弱fragile ,如果处理或检查不当,可能会被篡改、损坏或销毁。
Judicial Expertise
司法鉴定中心是一个有司法许可的实验室 - 司法鉴定的专家报告可以增加可信度 - 不能为消失的证据工作
Preservation of evidence:
证据的保存: • Let witnesses to prove the data is true • Store the data in blockchain
TSA(timestamping authority) should be the authorized organization
Blockchain is a hot technology. For Preservation, its function is similar to TSA
• If one organization hold the chain, the credit cannot beyond the credit of that organization
The notarial institute
公证人员是特殊的证人 - 公证报告在法律上有很强的可信度
Notarial preservation of evidence:
在监控下的全过程 - 使用公证机构提供的计算机和网络 - 减少不确定因素
人工服务不能满足7x24小时的需求 - 例如,欧洲足球比赛的现场转播