架构设计
文章平均质量分 89
以实战为线索,进化为系统架构师
Java架构何哥
从事政务信息化、大数据治理、智慧党建相关工作
展开
-
Feed流架构设计
在信息学里面,Feed其实是一个信息单元,比如一条朋友圈状态、一条微博、一条新闻或一条短视频等,所以Feed流就是不停更新的信息单元,只要关注某些发布者就能获取到源源不断的新鲜信息,我们的用户也就可以在移动设备上逐条去浏览这些信息单元。Feed流本质上是一个数据流,是将 “N个发布者的信息单元” 通过 “关注关系” 传送给 “M个接收者”。发布者产生数据,然后数据需要按照发布者组织,需要根据发布者查到所有数据,比如微博的个人页面、朋友圈的个人相册等。关注关系。原创 2024-07-01 00:12:37 · 1006 阅读 · 0 评论 -
Nginx反向代理前后端应用
前言:ngxin直接反向代理前端和后端项目。原创 2024-01-31 10:39:09 · 220 阅读 · 0 评论 -
API接口安全管控机制
前言:直接把API暴露到互联网上给外部系统是存在安全风险的,对外的api接口往往对安全性有严格要求。像很多手机银行、第三方API接口、政务系统等大量的业务场景,通过API对外提供服务。这种情况大部分都暴露在互联网,存在较大的安全隐患。希望能在合规、管理、技术之间架起桥梁,成为一个数据安全的“翻译者”。转载 2024-01-02 13:52:56 · 597 阅读 · 0 评论 -
MVC、MVP、MVVM模式的区别
这些模式是依次进化而形成MVC—>MVP—>MVVM。在以前传统的开发模式当中即MVC模式,前端人员只负责Model(数据库)、 View(视图)和 Controller /Presenter/ViewModel(控制器) 当中的View(视图)部分,写好页面交由后端创建渲染模板并提供数据,随着MVVM模式的出现前端已经可以自己写业务逻辑以及渲染模板,后端只负责提供数据即可,前端所能做的事情越来越多。原创 2023-12-05 15:58:26 · 437 阅读 · 0 评论 -
一文读懂中间件
在码农的日常工作中, 经常会提到中间件,然而大家对中间件的理解并不一致,导致了一些不必要的分歧和误解。“中间件”一词被用来描述各种各样的软件产品,在不同文献中有着许多不同的中间件定义,包括操作系统(和/或网络)和应用程序之间的软件层,以及两个应用程序之间的“粘合剂”。它也被描述为一种重要的集成工具,或支持与分布式软件的模块化连接。一般而言中间件和框架的区别是,中间件是独立运行的用于处理某项专门业务的CS程序,会有配套的客户端和服务端,框架虽然也是处理某个专门业务的但是它不是独立程序,是寄宿在宿主程序进程内的原创 2023-12-05 14:58:58 · 1133 阅读 · 0 评论 -
政府信息化与电子政务
电子政务实质上是对现有的、工业时代形成的政府形态的一种改造,即利用信息技术和其他相关技术,将其管理和服务职能进行集成,在网络上实现政府组织结构和工作流程优化重组, 超越时间、空间与部门分隔的制约,实现公务、政务、商务、事务的一体化管理与运行。原创 2023-12-05 12:26:04 · 331 阅读 · 0 评论 -
高级系统架构设计师之路
架构师 (Architect) 包含建筑师、设计师、创造 者、缔造者等含义,可以说,架构师是社会各领域的创造者和缔造者。架构设计师是系统或产品线的设计责任人,是一个负责理解和管理并最终确认和 评估非功能性系统需求(如软件的可维护性、性能、复用性、可靠性、有效性和可测试性等), 给出开发规范,搭建系统实现的核心构架,对整个软件架构、关键构件和接口进行总体设计并 澄清关键技术细节的高级技术人员。在组织中的职位方面,架构设计师是项目中的技术领导,应该拥有进行技术决策的权威。优秀的架构设计师应知道他的优势和弱势。原创 2023-12-05 11:38:09 · 451 阅读 · 0 评论 -
慢SQL治理经验总结
慢SQL可能引起很严重的系统性能问题,影响系统可用性和稳定性,因此,及时发现和治理慢SQL是十分重要的。我们建了一套完整的慢SQL发现-分析-推动治理的机制,极大减少了由慢SQL引发的系统问题。同时,在db稳定性上,我们还额外关注数据库CPU使用情况、活跃会话数情况等,建立及时的风险预警和快恢机制,第一时间解决数据库风险。转载 2023-12-04 17:21:21 · 74 阅读 · 0 评论 -
NoSql非关系型数据库
Nosql = not only sql,意即“不仅仅是sql”,泛指非关系型数据库。这些类型的数据存储不需要固定的模式(当然也有固定的模式),无需多余的操作就可以横向扩展。NoSql数据库中的数据是使用聚合模型来进行处理的,聚合模型主要分为:KV键值对,BSON,列族,图形,时序,向量等几种数据库结构。原创 2023-11-29 12:54:32 · 657 阅读 · 0 评论 -
主流数据库类型总结
随着互联网的高速发展,为了满足不同的应用场景,数据库的种类越来越多容易混淆,所以有必要在此总结一下。数据库根据数据结构可分为关系型数据库和非关系型数据库。非关系型数据库中根据应用场景又可分为键值(Key-Value)数据库、列存储数据库、面向文档数据库、图数据库、向量数据库、时序数据库搜索引擎数据库等。Nosql = not only sql,意即“不仅仅是sql”,NoSQL数据库泛指非关系型数据库原创 2023-11-29 12:26:22 · 1554 阅读 · 0 评论 -
如何保证缓存和数据库的双写一致性?
数据库和缓存双写一致性问题是一道经典的面试题,最初解决方案是先更新数据库、再删除缓存,然而如果发生掉电情况,只执行了前一步操作,那么缓存和数据库就出现了不一致性的问题。为了解决这个问题,所以通常会采用延迟双删 + 消息队列来保证业务的完整执行和数据一致性问题原创 2023-11-29 10:51:24 · 477 阅读 · 0 评论 -
概念能够升华体系:拥抱DDD领域模型驱动设计
牛B的人物,早已经厌倦了中英文混杂,他们更进一步,使用中英文缩写,对普通人进行降维打击。更厉害的,造就新的名词,并科普出去。有几项技术,我从心底里鄙视和厌恶,但每次在技术方案中,都默默的把它们加进去,而且给足了它们分量。因为它们对于方案的成功与否,起着重要的概念性指导作用。它们就是中台、低代码,以及DDD。这三个不同领域中的技术,肩负着同样的责任,那就是往死里忽悠。这三个词,很伟大,它们有一个共同点,都是很容易说服非技术但能决策的人员,然后向下铺开,非常具有营销型,是职业经理人和CTO的最爱。转载 2023-11-09 09:39:42 · 100 阅读 · 0 评论 -
SSO单点登录与OAuth2.0 区别
SSO是Single Sign On(单点登录)的缩写,OAuth是Open Authority(开放授权),这两者都是使用令牌的方式来代替用户密码访问应用。流程上来说他们非常相似,但概念上又十分不同。很多人会将其混为一谈,其实这两个还是有些区别的。原创 2023-11-06 17:45:53 · 1126 阅读 · 0 评论 -
大型电商系统的订单设计
电商系统需要满足商品、订单、支付、会员、优惠券、秒杀、拼团、砍价、分销、积分等多种经营需求。其中订单模块是比较核心复杂的,需要架构师在上面下不少功夫。原创 2023-10-24 15:16:26 · 537 阅读 · 0 评论 -
千万级大型API网关设计
API网关 简单来说是一种主要工作在七层、专门用于 API 的管理和流量转发的基础设施,并拥有强大的扩展性。网关的角色是作为一个API架构,用来保护、增强和控制对于API服务的访问。它是一个处于应用程序或服务(提供REST API接口服务)之前的系统,用来管理授权、访问控制和流量限制等。这样REST API接口服务就被网关保护起来,对所有的调用者透明。因此,隐藏在API网关后面的业务系统就可以专注于创建和管理服务,无需关心这些策略性的请求。原创 2023-10-13 11:22:42 · 383 阅读 · 0 评论 -
最常见的Web网站攻击手段
网络安全不容忽视,整理常见的Web网站攻击手段如下:XSS攻击 CSRF攻击 SQL注入攻击 文件上传漏洞 DDoS攻击 其他攻击手段一、XSS攻击XSS(Cross Site Scripting)跨站脚本攻击,为了不与层叠样式表(CSS)混淆,故将跨站脚本攻击缩写为XSS。原理即在网页中嵌入恶意脚本,当用户打开网页时,恶意脚本便开始在用户浏览器上执行,以盗取客户端cookie、用户名、密码,甚至下载木马程式,危害可想而知。场景1:以一个表单输入举例说明<input原创 2020-11-21 16:32:44 · 3222 阅读 · 0 评论 -
高并发下的秒杀系统设计
前言:高并发下如何设计出健壮的秒杀系统?比如淘宝和小米手机的秒杀活动。秒杀一般出现在商城的促销活动中,指定了一定数量(比如:10个)的商品(比如:手机),以极低的价格(比如:0.1元),让大量用户参与活动,但只有极少数用户能够购买成功。这类活动商家绝大部分是不赚钱的,说白了是找个噱头宣传自己。虽说秒杀只是一个促销活动,但对高并发场景下的后端多方面的知识要求不低。一、秒杀促销活动应该考虑哪些问题?1.1、库存超卖分析秒杀的业务场景,最重要的有一点就是超卖问题,假如备货只有100个,但是最终超卖了2原创 2022-04-29 16:48:28 · 2275 阅读 · 0 评论 -
Java架构师学习小目标
目前需要加强的方向,分布式架构、大数据技术、Docker+K8S容器、JVM调优。希望以后能对于老生常谈的云原生、数据治理、DevOps、ServerLess、ServiceMesh等技术架构谈笑风生。原创 2020-09-23 00:04:05 · 1132 阅读 · 1 评论 -
Java百万高并发的技术方案
前言:高并发,几乎是每个程序员都想拥有的经验。原因很简单:随着流量变大,会遇到各种各样的技术问题,比如接口响应超时、CPU load升高、GC频繁、死锁、大数据量存储等等,这些问题能推动我们在技术深度上不断精进。面对突发流量,不可能临时改造架构,最快的方式就是增加机器来线性提高系统的处理能力。高扩展性需要考虑:服务集群、数据库、缓存和消息队列等中间件、负载均衡、带宽、依赖的第三方等,当并发达到某一个量级后,上述每个因素都可能成为扩展的瓶颈点。一、什么是高并发高并发(High Concurrency)原创 2021-04-11 23:41:57 · 10391 阅读 · 1 评论 -
如何成为系统架构师?
在软件开发领域,我们经常听到系统架构师这个职位,这是一个负责设计和实施复杂系统或产品的关键角色。他们的任务不仅仅是创建和维护系统的具体组件,而是考虑整个系统的整体架构。他们需要理解如何将不同的部分整合在一起,以满足特定的性能、安全性、效率、可靠性和可扩展性要求。早期的软件或许可以由几个天才程序员完成,比如求伯君一个人关在酒店里写出了WPS1.0。但进入大型软件时代后,单打独斗的英雄主义不复存在,需要团队配合。原创 2023-10-08 15:43:24 · 421 阅读 · 0 评论 -
千万级用户的大型网站,如何进行服务器压力预估?
假设这个网站预估的用户数是1000万,那么根据28法则,每天会来访问这个网站的用户占到20%,也就是200万用户每天会过来访问。通常假设平均每个用户每次过来会有30次的点击,那么总共就有6000万的点击(PV)。每天24小时,根据28法则,每天大部分用户最活跃的时间集中在(24小时 * 0.2)≈ 5小时内,而大部分用户指的是(6000万点击 * 0.8 ≈ 5000万点击)也就是说,在5小时内会有5000万点击进来。原创 2023-09-22 10:57:56 · 361 阅读 · 0 评论 -
MyBatisPlus实现多租户功能
SaaS,是Software-as-a-Service的缩写名称,意思为软件即服务,即通过网络提供软件服务。SaaS平台供应商将应用软件统一部署在自己的服务器上,客户可以根据工作实际需求,通过互联网向厂商定购所需的应用软件服务,按定购的服务多少和时间长短向厂商支付费用,并通过互联网获得Saas平台供应商提供的服务。SaaS服务通常基于一套标准软件系统为成百上千的不同客户(又称为租户)提供服务。原创 2023-08-28 09:41:08 · 10295 阅读 · 8 评论 -
SaaS多租户系统架构设计
多租户技术是一种软件架构技术,它是在探讨与实现如何于多用户的环境下共用相同的系统或程序组件,并且仍可确保各用户间数据的隔离性。它是为共用的数据中心内如何以单一系统架构与服务提供多数客户端相同甚至可定制化的服务,并且仍可保障客户的数据隔离。简单来说是一个单独的实例可以为多个组织服务。原创 2023-08-27 16:43:41 · 3946 阅读 · 1 评论