- 博客(258)
- 问答 (3)
- 收藏
- 关注
转载 03系统设计之商业业务平台(D4_【电商交易】闲鱼-亿级商品结构化背后的思考和演进)
闲鱼是一个典型的C2C场景的闲置交易平台,每个在闲鱼的用户都能享受到自由交易的乐趣,只要简单的输入商品名,商品价格,库存等信息就能完成一个商品的发布。充分的自由是闲鱼活力的来源,但是这对于一个电商平台来说是一个挑战。本文要说的商品结构化就是痛点之一。C2C平台的商品结构化之所以难,是因为用户完成结构化的动力不足。怎样让用户以最小的成本来完成结构化,我们不能寄希望于商家后台这样很重的解决方案,我们需要的是一个简单高效灵活的解法。
2024-11-24 12:54:59 42
原创 03系统设计之商业业务平台(D3_【电商交易】京东-亿级商品详情页设计)
商品详情页是展示商品详细信息的一个页面,承载在网站的大部分流量和订单的入口。京东商城目前有通用版、全球购、闪购、易车、惠买车、服装、拼购、今日抄底等许多套模板。各套模板的元数据是一样的,只是展示方式不一样。目前商品详情页个性化需求非常多,数据来源也是非常多的,而且许多基础服务做不了的都放我们这,因此我们需要一种架构能快速响应和优雅的解决这些需求问题。数据闭环数据维度化拆分系统Worker无状态化+任务化异步化+并发化多级缓存化动态化弹性化降级开关多机房多活多种压测方案。
2024-11-24 12:53:47 986
原创 01Web3.0行业
简单来讲,Web 3.0是去中心化(decentralized)的互联网,用户可以 ”read, interact and own”,是继现有的互联网Web 1.0 和Web 2.0之后的下一代互联网。Web 3.0虽然风风火火的,但其仍处于探索阶段,并未形成一个完整、成熟的模式。可能也正因如此,至今并没有一个明确的定义来清晰的概括什么是Web 3.0。
2024-11-23 21:53:21 1329
原创 03系统设计之商业业务平台(D2_【秒杀抽奖】秒杀系统设计)
提示:这个章节会重新梳理。秒杀请求在高度集中在某一个时间点。这样一来,就会导致一 个特别高的流量峰值,它对资源的消耗是瞬时的。能够抢到商品的人数是有限的,也就是说10人和1000人发 起请求的结果都是一样的。也就是说真正开始下单时,秒杀请求并不是越多越好。
2024-11-23 18:58:44 1210
原创 02微服务系统与设计(D1_走出微服务误区:避免从单体到分布式单体)
最近社区频繁出现的对微服务的各种质疑和反思的声音,甚至放弃微服务回归单体。本文从“分布式单体”问题出发,介绍通过引入非侵入式方案和引入Event/EDA 来走出微服务实践误区:从单体到微服务,却最后沦为分布式单体。Event 代表领域中已经发生的事情:通常意味着有行为(Action)已经发生,有状态(Status)已经改变。Event 可以被理解为是对已经发生的事实的客观陈述;这意味着 Event 通常是不可变的:Event 的信息(代表着客观事实)不能被篡改,Event 的产生不能逆转;
2024-11-22 10:32:40 1155
原创 07架构面试题
而不是等着问题出现以后在去思考。而是提前预判和以及公司团队人员的建设以及技能提升都会有一个整体的解决方案。根据公司业务在那个阶段,具体去选择那个方案,但是成熟的架构师他一定会有完整的架构解决方案,
2024-11-20 22:45:06 697
原创 05架构安全(D1_保障架构安全)
对已知问题有有效的解决方案,对未知/潜在问题建立发现和防御机制。对于安全问题,首先要提高安全意识,建立一个安全的有效机制,从政策层面,组织层面进行保障。比如服务器密码不能泄露,密码每月更新,并且三次内不能重复;每周安全扫描等。以制度化的方式,加强安全体系的建设。同时,需要注意与安全有关的各个环节。安全问题不容忽视。包括基础设施安全,应用系统安全,数据保密安全等。
2024-11-20 22:16:39 219
原创 04高可用高并发(D2_高可用 - D2_容灾备份 - 故障转移)
容灾技术是系统的高可用性技术的一个组成部分,容灾系统更加强调处理外界环境对系统的影响,特别是灾难性事件对整个IT节点的影响,提供节点级别的系统恢复功能。故障转移(failover),即当活动的服务或应用意外终止时,快速启用冗余或备用的服务器、系统、硬件或者网络接替它们工作。故障恢复是在计划内或计划外中断解决后切换回主站点的过程。容灾技术是系统的高可用性技术的一个组成部分,容灾系统更加强调处理外界环境对系统的影响,特别是灾难性事件对整个IT节点的影响,提供节点级别的系统恢复功能。容灾。
2024-11-19 15:53:50 782
原创 04高可用高并发(D2_高可用 - D1_负载均衡)
负载均衡(Load Balance),意思是将负载(工作任务,访问请求)进行平衡、分摊到多个操作单元(服务器,组件)上进行执行。是解决高性能,单点故障(高可用),扩展性(水平伸缩)的终极解决方案。面对大量用户访问、高并发请求,海量数据,可以使用高性能的服务器、大型数据库,存储设备,高性能Web服务器,采用高效率的编程语言比如(Go,Scala)等,当单机容量达到极限时,我们需要考虑业务拆分和分布式部署,来解决大型网站访问量大,并发量高,海量数据的问题。
2024-11-19 15:53:11 913
原创 04高可用高并发(D1_高并发 - D3_降级 - 熔断)
在高并发环境下,服务之间的依赖关系导致调用失败,解决的方式通常是: 限流->熔断->隔离->降级, 其目的是防止雪崩效应。Spring Cloud Netflix Hystrix就是隔离措施的一种实现,可以设置在某种超时或者失败情形下断开依赖调用或者返回指定逻辑,从而提高分布式系统的稳定性.Sentinel 是阿里中间件团队开源的,面向分布式服务架构的轻量级高可用流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助用户保护服务的稳定性。
2024-11-19 15:52:03 1278
原创 04高可用高并发(D1_高并发 - D2_限流)
每个系统都有服务的上线,所以当流量超过服务极限能力时,系统可能会出现卡死、崩溃的情况,所以就有了降级和限流。限流其实就是:当高并发或者瞬时高并发时,为了保证系统的稳定性、可用性,系统以牺牲部分请求为代价或者延迟处理请求为代价,保证系统整体服务可用。每个系统都有服务的上线,所以当流量超过服务极限能力时,系统可能会出现卡死、崩溃的情况,所以就有了降级和限流。限流其实就是:当高并发或者瞬时高并发时,为了保证系统的稳定性、可用性,系统以牺牲部分请求为代价或者延迟处理请求为代价,保证系统整体服务可用。
2024-11-19 15:50:54 449
原创 04高可用高并发(D1_高并发 - D1_缓存)
高并发实现的三板斧:缓存,限流和降级**。缓存在高并发系统中有者极其广阔的应用,需要重点掌握,本文重点介绍下缓存及其实现。@pdai随着互联网的普及,内容信息越来越复杂,用户数和访问量越来越大,我们的应用需要支撑更多的并发量,同时我们的应用服务器和数据库服务器所做的计算也越来越多。但是往往我们的应用服务器资源是有限的,且技术变革是缓慢的,数据库每秒能接受的请求次数也是有限的(或者文件的读写也是有限的),如何能够有效利用有限的资源来提供尽可能大的吞吐量?
2024-11-19 15:50:17 1078
原创 03架构模式(D3_架构模式02)
这个模式说的是失败时必须进行撤销的操作,可以由一组补偿程序来做相应的补偿。在这里我想说的更广一点,请求客户端发出但是没到服务端,业务逻辑没有执行请求客户端发出服务端收到也处理成功了,业务逻辑执行了客户端没收到结果请求客户端发出服务端收到但处理失败了,客户端没收到结果所以在出现服务调用失败或超时的时候,服务端执行究竟有没有成功客户端是不明确的(只有客户端收到了明确的服务端返回的业务错误才真正代表执行失败),这个时候需要有补偿逻辑来同步服务端的执行状态。如果这样。
2024-11-17 20:05:23 1093
原创 03架构模式(D2_架构模式01)
架构演进中有很多知识点,总体上可以归结为以下模式,这里说的模式本质是架构中技术点的抽象。强烈推荐李智慧老师的《大型网站技术架构》,本文的内容也是来源于它,在此基础上拓展了下。
2024-11-17 20:04:44 664
原创 SpringCloud篇(负载均衡 - Ribbon)
Ribbon是一个负载均衡组件,并不是注册中心,这里这是趁热打铁,了解了Eureka注册中心后,马上进入负载均衡的学习。负载均衡的规则都定义在IRule接口中,而IRule有很多不同的实现类:内置负载均衡规则类规则描述轮询服务列表来选择服务器,Ribbon默认的负载均衡规则对以下两种服务器进行忽略:1)在默认情况下,这台服务器如果3次连接失败,这台服务器就会被设置为“短路”状态,短路状态将持续30秒,如果再次连接失败,短路的持续时间就会几何级地增加。
2024-11-17 19:58:42 774
原创 SpringCloud篇(服务保护 - Sentinel)
雪崩问题:就是微服务之间相互调用,因为调用链中的一个服务故障,引起整个链路都无法访问的情况。限流是对服务的保护,避免因瞬间高并发流量而导致服务故障,进而避免雪崩。是一种预防措施。超时处理、线程隔离、降级熔断是在部分服务故障时,将故障控制在一定范围,避免雪崩。是一种补救措施。Sentinel是阿里巴巴开源的一款微服务流量控制组件。当请求超过QPS阈值时,快速失败和warm up 会拒绝新的请求并抛出异常。而排队等待则是让所有请求进入一个队列中,然后按照阈值允许的时间间隔依次执行。
2024-11-17 19:57:59 1302
原创 SpringCloud篇(服务网关 - GateWay)
Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。创建项目,引入nacos服务发现和gateway依赖配置application.yml,包括服务基本信息、nacos地址、路由路由id:路由的唯一标示。
2024-11-17 19:57:16 1386
原创 Linux篇(权限管理命令)
在多用户计算机系统的管理中,权限是指某个特定的用户具有特定的系统资源使用权利在Linux 中分别有读、写、执行权限:权限针对文件权限针对目录读r表示可以查看文件内容;cat表示可以(ls)查看目录中存在的文件名称写w表示可以更改文件的内容;vim 修改,保存退出表示是否可以删除目录中的子文件或者新建子目录(rm/touch/mkdir)执行x表示是否可以开启文件当中记录的程序,一般指二进制文件(.sh)表示是否可以进入目录中(cd)
2024-11-15 00:21:00 1085
原创 Linux篇(用户管理命令)
任何一个运维人员想要登录服务器,都必须先申请一个账号,然后以这个账号的身份进入系统,就像我们前面说的wangzhan这个账号每个账号都拥有一个唯一的用户名和各自的密码,用户在登录时输入正确的用户名和密码后,就能够进入系统,默认会进入到这个用户自己的主目录用户组是具有相同特征用户的逻辑集合,简单来说,就是具有相同权限的用户的集合人事部有20名员工,他们都需要访问一个文件夹,如果我们给这20个用户的账号分别设置权限,这样太麻烦了,
2024-11-15 00:20:23 993
原创 SpringCloud篇(配置中心 - Nacos)
这样,UserApplication(8081)使用的profile是dev,UserApplication2(8082)使用的profile是test。{spring.profiles.active}.${spring.cloud.nacos.config.file-extension}作为文件。Nacos一方面可以将配置集中管理,另一方可以在配置变更时,及时通知微服务,实现配置的热更新。我们最终的目的,是修改nacos中的配置后,微服务中无需重启即可让配置生效,也就是。
2024-11-13 13:31:14 1102
原创 SpringCloud篇(注册中心 - Nacos)
国内公司一般都推崇阿里巴巴的技术,比如注册中心,SpringCloudAlibaba也推出了一个名为Nacos的注册中心。也就是说,user-service是服务,一个服务可以包含多个集群,如杭州、上海,每个集群下可以有多个实例,形成。其中包含3个nacos节点,然后一个负载均衡器代理3个Nacos。Nacos的默认端口是8848,如果你电脑上的其它进程占用了8848端口,请先尝试关闭该进程。杭州机房内的order-service应该优先访问同机房的user-service。
2024-11-13 13:30:11 1082
原创 SpringCloud篇(注册中心 - Eurea)
下面,我们将order-service的逻辑修改:向eureka-server拉取user-service的信息,实现服务发现。spring会自动帮助我们从eureka-server端,根据userservice这个服务名称,获取实例列表,而后完成负载均衡。① user-service服务实例启动后,将自己的信息注册到eureka-server(Eureka服务端),这个叫服务注册。最后,我们要去eureka-server中拉取user-service服务的实例列表,并且实现负载均。
2024-11-13 13:28:29 797
原创 SpringCloud篇(服务拆分/远程调用 - 远程调用 - Fegin)
其作用就是帮助我们优雅的实现http请求的发送,解决上面提到的问题。Fegin 使用步骤① 引入依赖② 添加@EnableFeignClients注解③ 编写FeignClient接口④ 使用FeignClient中定义的方法代替RestTemplateFeign可以支持很多的自定义配置,如下表所示:类型作用说明修改日志级别包含四种不同的级别:NONE、BASIC、HEADERS、FULL响应结果的解析器http远程调用的结果做解析,例如解析json字符串为java对象请求参数编码。
2024-11-12 22:47:39 1271
原创 SpringCloud篇(服务提供者/消费者)(持续更新迭代)
如果服务 A 调用了服务 B,而服务 B 又调用了服务 C,服务 B 的角色是什么?服务消费者:一次业务中,调用其它微服务的服务。(调用其它微服务提供的接口)服务提供者:一次业务中,被其它微服务调用的服务。(提供接口给其它微服务)但是,服务提供者与服务消费者的角色并不是绝对的,而是相对于业务而言。因此,服务 B 既可以是服务提供者,也可以是服务消费者。
2024-11-12 22:44:51 393
原创 MySQL篇(一条SQL在MySQL中是如何执行的)
这两种执行方法的逻辑结果是一样的,但是执行的效率会有不同,而优化器的作用就是决定选择使用哪一个方案。连接完成后,如果你没有后续的动作,这个连接就处于空闲状态,你可以在 show processlist 命令中看到它。MySQL 从你输入的"select"这个关键字识别出来,这是一个查询语句。你可以看到,如果查 询命中缓存,MySQL 不需要执行后面的复杂操作,就可以直接返回结果,这个效率会很高。删库是不需要跑路的,因为我们的SQL执行时,会将sql语句的执行逻辑记录在我们的bin-log当中,什么是。
2024-11-11 15:55:48 970
原创 MySQL篇(索引最佳实践)
like KK%相当于=常量,%KK和%KK% 相当于范围‐‐ mysql5.7关闭ONLY_FULL_GROUP_BY报错。
2024-11-11 15:18:32 940
原创 Netty篇(心跳检测机制)
netty心跳机制示例,使用Netty实现心跳机制,使用netty4,IdleStateHandler 实现。Netty心跳机制,netty心跳检测,netty,心跳我们知道使用netty的时候,大多数的东西都与Handler有关,我们的业务逻辑基本都是在Handler中实现的。Netty中自带了一个IdleStateHandler可以用来实现心跳检测。服务端启动后,等待客户端连接,客户端连接之后,向服务端发送消息。如果客户端在“干活”那么服务。
2024-11-11 10:15:08 666
原创 Netty篇(WebSocket)
没有其他技术能够像WebSocket一样提供真正的双向通信,许多web开发者仍然是依赖于ajax的长轮询来实现。(注:我认为长轮询是富于创造性和多功能性的,虽然这只是一个不太完美的解决办法(hack))对Websocket缺少热情,也许是因为多年前他的安全性的脆弱,抑或者是缺少浏览器的支持,不管怎样,这两个问题都已经被解决了。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。在WebSocket API中,浏览器。
2024-11-11 10:14:36 649
原创 02架构视角(D3_服务演化)
Kubernetes、Service Mesh 和 Serverless应该是最近比较火的了,而上文主要从逻辑架构角度分析了架构演进,本文将从服务演化和容器编排化的角度帮你增强对架构演进的认识。@pdaiKubernetes、Service Mesh 和 Serverless 三者共同演绎不同层次的封装和向上屏蔽下面的细节。
2024-11-10 19:04:23 1112
原创 01架构 - 02架构的维度(D2_架构演进)
在学习架构时,第一步不要去学习框架,而是要学习架构的演进。强烈推荐李智慧老师的《大型网站技术架构》,这本书翻起来很快,对构筑你自己的体系很有帮助,本文的内容来源于它,在此基础上拓展了下。@pdai。
2024-11-10 19:03:39 1274
原创 03架构模式(D1_架构分层模式)
技术框架(technological Framework)是整个或部分技术系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法。于开发者而言,实际工作从通常采用的是分层模型,这里独立一个章节,总结经典的七层逻辑架构。@pdai。
2024-11-09 22:39:00 297
原创 01架构 - 02架构的维度(D1_架构视角)
在学习架构时,我认为首先要理清楚架构的视角,因为你所认知的架构和别人所说的架构可能是两码事。对于不同职位的视角是不一样的,比如开发而言他更多的看到的是开发架构;对售前人员,他可能更多的看到的是业务架构;对于运维人员,他看到的可能是运维架构;而对于技术支持和部署人员,他更多的看到的网络和物理架构。
2024-11-09 22:38:21 964
原创 01架构 - 01基础 -> 方法论(D1_简介 - 特点 - 本质 - 目标)
本节总结下架构相关的基础知识:概述,特点,目标,本质...所谓架构,见仁见智,很难有一个明确或标准的定义;但架构并非镜花水月或阳春白雪,有系统的地方就需要架构,大到航空飞机,小到一个电商系统里面的一个功能组件,都需要设计和架构。抽象而言,架构就是对系统中的实体以及实体之间的关系所进行的抽象描述,是对物/信息的功能与形式元素之间的对应情况所做的分配,是对元素之间的关系以及元素同周边环境之间的关系所做的定义。架构能将目标系统按某个原则进行切分,切分的原则,是要便于不同的角色进行并行工作,结构良好的创造。
2024-11-09 22:37:49 1070
原创 SpringCloud篇(微服务框架)
Spring Cloud 是一个服务治理平台,提供了一些服务框架。包含了:服务注册与发现、配置中心、消息中心 、负载均衡、数据监控等等。Spring Cloud 是一个微服务框架,相比 Dubbo 等 RPC 框架,Spring Cloud 提供了全套的分布式系统解决方案。Spring Cloud 对微服务基础框架 Netflix 的多个开源组件进行了封装,同时又实现了和云端平台以及 Spring Boot 框架的集成。
2024-11-09 21:47:04 843
空空如也
为什么最后e=0,逻辑上应该e=30啊,不是代码块改变了静态变量值?
2021-10-08
求帮解!这个到底该往哪改啊!
2021-06-28
谁能帮我解决这个BUG啊!我知道是个空的,但是不会解决啊!
2021-06-25
TA创建的收藏夹 TA关注的收藏夹
TA关注的人