
系统架构
文章平均质量分 69
左直拳
程序猿
展开
-
中台(还需要输入3个字)
什么是中台?没有AI之前,在网上搜索得到的答案,总是堆砌一大堆概念,啰啰嗦嗦一大坨,根本看不懂。按照我的经验,如果一个概念,你扯不清楚,说明你没有真正理解;但如果大家,或者大部分人扯不清楚,那很有可能这个概念有问题。它是个伪科学。中台就是这样的。顾名思义,从名字理解,中台应该位于前台和后台之间,起到一个承上启下的过渡作用。简单而言,就是支持复用,或者直接利用现成的成果。因为中台可以分为业务中台,数据中台,技术中台。业务中台,就是将一些分散的业务聚合在一起,以一个套餐的形式提供服务。原创 2025-01-22 16:37:46 · 299 阅读 · 0 评论 -
前后端分离项目集成单点登录项目CAS5.18
之前我在项目中使用过CAS作为单点登录服务,不过那些项目,不管是asp.net MVC项目,还是java的spring boot项目,是前后端不分的,只要使用CAS的客户端(对于asp.net mvc项目来说,cas的客户端就是DotNetCasClient.dll,而java项目,cas客户端就是一些java包),然后配置一下就好了。现在普遍前后端分离,该如何使用CAS呢?原创 2024-12-31 20:17:31 · 993 阅读 · 0 评论 -
第三方集成站点带token访问SpringSecurity应用站点自动登录方案
近期有个WEB项目需要改造。业主找第三方搞了一个集成站点,将多个应用站点的链接集中放在一个导航页面。由于进入集成站点时已经登录过了,业主要求点击这些应用站点的链接时就不必再登录。以前做过类似项目,用的是单点登录。大家都用同一个登录系统,一次登录,到处同行,不亦快哉。不过也有一些缺点,一是单点登录比较复杂,不好搞。之前我们用过一个开源的单点登录系统cas,代码一大堆,部署也很复杂,然后每个使用它的应用都要有个客户端,总之非常复杂。出了问题也不知道是哪里的毛病。原创 2024-03-01 17:45:06 · 1276 阅读 · 1 评论 -
项目应用多级缓存示例
事实证明,这种多级缓存机制下,前端展示数据非常迅速,及时。虽然前端和WEB后端之间没有使用websocket进行数据传输,而是使用了最笨的定期获取,但丝毫没有影响前端的用户体验。2)WEB后端设置一个定时器,每2秒读一次redids的1号库,处理后写入redis的2号库。3)前端虽有多个组件,但不是每一个组件都向后端请求,而是统一请求一次,存入前端缓存,然后全部组件都从前端缓存中读取,对性能是一个保障。2)后端定期处理原始数据,将结果缓存,当前端请求时,返回缓存中的该结果,减少重复劳动,提高了性能。原创 2023-12-22 18:00:11 · 715 阅读 · 0 评论 -
centos or redhat?
如果服务器不用新装什么软件,保持相对稳定,我认为采用centos8或centos7足够了。原创 2022-08-29 16:55:08 · 3719 阅读 · 0 评论 -
字典表(还需要输入2个字)
字典表,是提供项目中一些字段的值,比如某个省的城市列表,或者海洋排污口的类型,等等。其作用,类似于系统开发过程中的数据字典,除了供查阅、备忘外,主要还是为了统一口径和标准。字典表就是将这些统一口径值(标准值)存储下来,供程序读取。最典型的表现,就是页面中的下拉框。这些值从哪里来?就应该从字典表中读取。否则,要么是直接写死在前端页面,但就有个与服务器端保持一致的问题;要么还是从服务器端返回,但变成写死在服务器端,这样用户就不能再修改和维护了。...原创 2022-08-02 11:42:27 · 1970 阅读 · 0 评论 -
一个文件管理系统的软硬件配置清单
只好硬着头皮,查阅资料,仔细揣摩,拟订系统软硬件配置清单。这算是那种角色做的工作?应该是架构师。原创 2022-08-01 18:16:47 · 3000 阅读 · 0 评论 -
阿里云上的高性能高并发高可用架构
如题原创 2022-03-29 18:41:37 · 2332 阅读 · 0 评论 -
裸金属服务器
物理服务器,使用云产品。裸金属服务器,是相对于虚拟服务器而言的概念,是物理服务器。云计算盛行的时代,各种硬件通过虚拟技术,整合成资源,就像水、电、煤气一样,只要管道畅通,就能可以源源不断地使用,按需付费。我们在云上租用的服务器,通常其实也就是虚拟服务器。虚拟化并不是完美无缺的。它有两个无法回避的缺陷。首先第一点,是性能损失。虽然虚拟化云化吹得天花乱坠,但是,毕竟引入了“第三者”,操作系统和应用程序在调用硬件资源的时候,没有直接掌控来得那么得心应手。第二点,就是嘈杂邻居效应。参考资料什么是裸金属原创 2022-01-15 23:06:59 · 565 阅读 · 0 评论 -
单体架构
一、什么是单体架构功能集中、代码和数据中心化、一个发布包、部署后运行在同一进程的应用程序,称之为单体架构应用,也叫单块架构应用。前一篇文章说到三层架构,虽然系统分成3层,但最终运行,忽略负载均衡、水平扩展的情况下,仍然是同一台机器同一进程。我估计,我们当前开发的信息系统,除了微服务架构,其他都是单体架构。SOA,由多个单体架构程序组成;微服务的每个服务,粒度往往更小。微服务架构中的服务,是指一个单体系统拆分出来的一个个模块,依附于容器进行独立运行,每个模块不算一个完整的系统,叫组件可能更合适一些。SO原创 2021-04-14 23:59:44 · 2288 阅读 · 1 评论 -
领域驱动设计
什么是领域驱动设计原创 2021-03-23 22:46:47 · 1509 阅读 · 1 评论 -
云原生
什么是云原生?云原生(CloudNative)是一个组合词,Cloud+Native。Cloud表示应用程序位于云中,而不是传统的数据中心;Native表示应用程序从设计之初即考虑到云的环境,原生为云而设计,在云上以最佳姿势运行,充分利用和发挥云平台的弹性+分布式优势。按照官方的定义,云原生应用有4大特征:1、微服务微服务优点多多,将庞大的系统分解成若干较小较简单的小系统,解决了问题的复杂性。每个微服务独立开发,技术栈可灵活选择,利于并行开发;每个微服务高内聚,微服务间低耦合,利于整个系统的扩展性原创 2021-02-24 18:35:52 · 317 阅读 · 0 评论 -
地理信息云服务
有大佬雄心勃勃,准备打造一个地理信息平台,作为基础服务,支撑各种应用。其中一项指标,是要能经得起一定量的并发访问。这是自然,基础服务嘛。高并发的套路,如前所学,无非就是异步机制、负载均衡、缓存、分布式数据库之类。地图服务没有什么来自于用户的数据写入,主要是读取,异步机制估计用不上;但消息队列还是要的,可以起到削峰的作用。地图服务是无状态的,伸缩性相对比较好处理,但也有可能在多集群甚至单集群中,不同机器提供的服务,存储的数据不一样,所以负载均衡算法要依据情况而定。缓存对于地图来说,就是切片。切片文件应原创 2021-02-24 15:19:52 · 645 阅读 · 0 评论 -
网站的可扩展架构
一、什么是可扩展性扩展性(Extensibility),对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力。表现在系统基础设施稳定,不需要经常变更,应用之间较少依赖和耦合,对需求变更可以敏捷响应。这是系统架构设计层面的开闭原则。简单而言,就是增加或修改模块很简单,不会对其他模块造成什么影响。扩展性跟伸缩性有所区别。伸缩性(Scalability),通过增加/减少自身资源规模来增强/减少处理能力。在网站来说,就是如果要强一些,就多加几台服务器;想普通一点,节约成本,就减少一点服务器,这些都不需要原创 2021-02-21 11:54:15 · 366 阅读 · 1 评论 -
网站的伸缩性架构
网站的伸缩性是指不需要改变网站的软硬件设计,仅仅通过改变部署的服务器数量就可以扩大或者缩小网站的服务处理能力。伸,很好理解,随着网站的业务量增大,访问量增多,需要部署越来越多的服务器,此为伸。缩,可以应对举办活动,临时加入若干服务器,活动结束后再下线,节约成本。一、伸缩性架构设计网站的伸缩性设计可分为2类:1)根据不同功能进行物理分离实现伸缩,即不同的服务部署在不同的服务器2)单一功能通过集群实现伸缩,即集群内的服务器部署相同的服务。1、不同功能进行物理分离实现伸缩网站由小到大的发展历程,就是原创 2021-02-19 18:13:21 · 529 阅读 · 1 评论 -
网站高可用架构
一、网站分层架构二、高可用的应用三、高可用的服务四、高可用的数据五、网站软件质量保证六、网站运行监控七、网站可用性度量与考核原创 2021-02-10 21:47:00 · 493 阅读 · 0 评论 -
网站高性能架构
根据网站分层架构,网站的性能优化,可分为Web前端性能优化、应用服务器性能优化、存储服务器性能优化3大类。原创 2021-02-07 19:14:03 · 288 阅读 · 0 评论 -
伸缩性与扩展性
大型网站核心架构要素有性能、可用性、伸缩性、扩展性和安全性(信息系统的质量属性有性能、可用性、可修改性、可测试性、安全性、易用性、可伸缩性、可重用性)。其中,这里说的伸缩性和扩展性有什么区别呢?伸缩性伸缩性是指通过不断向集群中加入服务器的手段来缓解不断上升的用户并发访问压力,和不断增长的数据存储要求。衡量架构伸缩性的主要标准就是:1)是否可以用多台服务器构建集群2)是否容易向集群中添加新的服务器3)加入新的服务器后是否可以提供和原有服务器无差别的服务4)集群中可容纳的服务器数量是否有限制扩原创 2020-12-20 23:38:25 · 1039 阅读 · 0 评论 -
集群集群
一、什么是集群集群(Cluster )是将多个单独存在的服务器,通过集群技术将其集合,构成一个工作组、一台大型的服务器,以单一系统的模式加以管理。简而言之,集群就是将多台机器组合成一台机器使用。二、集群的分类和功用将多台机器组合成一台机器使用,很自然就可以想到,集群的作用:1)提高性能2)提高可用性3)提供更多的存储资源按照功用,集群可分为以下几个类型:1、负载均衡(LB)集群应对高并发。硬件:F5 BIG-IP A10软件:LVS Nginx/Tengine Hap原创 2020-11-29 21:37:32 · 2239 阅读 · 1 评论 -
大数据存储HBase
这两天要写一个方案,某单位想建一个中心数据库,汇聚各业务系统数据,以及各种网上抓取的预报数据。我设想是用HBase。主要考虑点是:1、开源2、支持海量数据该单位的数据量增长按规划还是很大的,大约每天20GB+。关系型数据库就不考虑了。RDBMS本质上是单机系统,拿mysql来说吧,主从复制,读写分离玩得很溜,但毕竟不是分布式数据库,数据量还是要受限于单台机器的容量。当然mysql有所谓分布式集群,但估计就是个解决方案,用一个个单机版的mysql来凑成一堆分布式。其他分布式数据库吧,什么ES啦,mo原创 2020-07-21 19:09:33 · 712 阅读 · 1 评论 -
单页应用 vs 多页应用
web项目可分为单页应用 和 多页应用。单页应用,就是只有一个页面,其他内容,估计就是动态加载,用从加载其他页面片段 + 请求后台 这种方式来完成。这么一说,我之前做的,其实都是多页应用。相比之下,单页应用的优缺点单页应用的优势是什么呢?1、页面切换非常快,不会出现白屏,还可以作出过渡效果2、公用的js和css一次性加载,不浪费3、良好的前后端分离,服务器端只管响应数据请求,不用关心页面渲染,压力小,API重用性高缺点呢?1、首次加载慢。不难理解,这么多东西要一下子加载,当然慢了。加载原创 2020-07-06 17:51:38 · 568 阅读 · 0 评论 -
垂直扩展和水平扩展
垂直扩展,就是升级机器,加强装备。换一台更贵更豪华的机器,CPU啦,内存啦,磁盘阵列啦,升之换之。以质取胜。水平扩展,就是添加机器。一台不够,就加两台。以数量弥补质量的不足,或曰,量变达成质变。垂直扩展的应用场景,可以是关系型数据库,如oracle,sql server,本质上都是单机版的数据库,数据量增大以后,访问速度变慢,这时换一台更强的服务器。水平扩展则可以对应分布式数据库,负载均衡,...原创 2020-05-01 22:30:21 · 2699 阅读 · 0 评论 -
Redis与memcached的区别
说到缓存,现阶段很自然就会想到Redis和memcached。那么,二者有何区别呢?原创 2020-03-29 18:46:53 · 509 阅读 · 0 评论 -
基于http的API的安全性
基于http的API,怎么保证安全性?当前的信息系统,安全第一道关卡,当然就是密码了。API也不例外。要么就是一次性登录,获得一个短期内有效的token;要么就是每次请求都带上账号和密码。如果是每次都带上账号和密码,那么API站点必须要求使用https,否则有泄露风险。当然变通方法可以是采用非对称加密,将密码用公钥加密后发送,服务端用私钥解密。但是,这么一来,客户端的工作量变大,不一定可行。...原创 2020-03-17 12:16:35 · 499 阅读 · 0 评论 -
微服务(还需要输入2个字)
微服务架构现阶段甚嚣尘上。啥是微服务?微服务与SOA微服务框架原创 2020-02-23 18:03:49 · 496 阅读 · 0 评论 -
系统设计的套路
一、架构风格、设计模式和惯用法区别就是层级不同:架构风格 > 设计模式 > 惯用法。二、架构设计在需求分析与软件设计之间有一个衔接。三、软件设计分为结构化设计和面向对象设计。通常,我们这些半吊子水准,一知半解的人,什么概要设计、详细设计张嘴就来。但事实上,这两个概念来源于结构化设计。目前来说,面向对象设计才是主流。SD和OOD就好像中西医结合一样,二者结合着用。一般而言...原创 2020-02-23 12:28:56 · 989 阅读 · 0 评论 -
分布式计算框架与分布式文件系统
分布式计算框架与分布式文件系统是两个概念。分布式计算框架是用于处理大数据的一种模型,而分布式文件系统可以用于大数据的存储。一、分布式计算框架对于如何处理大数据,计算机科学界有两大方向:一是集中式计算,二是分布式计算。过去,分布式计算理论比较复杂,技术实现比较困难,因此集中式计算一直是主流解决方案。但2003年到2004年间,Google发表了MapReduce、GFS(Google File...原创 2020-02-03 22:05:51 · 1906 阅读 · 0 评论 -
REST风格RPC与SOAP RPC的比较
RPC,remote procedure call,远程过程调用。分为REST风格RPC和SOAP RPC两种。一直以来,我对这两个概念都比较模糊,总是习惯性地将REST风格RPC称为WEB API,SOAP RPC称为WebService,应该是很不规范的。那么REST风格RPC和SOAP RPC比较如何呢?它们都是两种常用的Web服务集成方案。相对而言,SOAP将WEB服务封装为经典程序...原创 2020-02-02 13:01:35 · 797 阅读 · 0 评论 -
系统架构设计师
合格分数线终于出来了,压线通过,有惊无险,了却心头一件大事。这个系统架构设计师,我已经是第三次考了。如果今年还没过,我当然会继续考下去。问题是,毅力我可以有,但我的时间却越来越少了。从2018年不知什么时候起,我开始老花,看东西要挪得比较远才看得清,样子一如父辈,搞笑得很。今年的冬天比去年要冷一些,尤其是元旦前后,寒彻骨、透心凉。沉静的岁月中,获得这个高级资格是我得到的最大温暖和慰藉。...原创 2019-01-18 19:04:11 · 1049 阅读 · 0 评论 -
前后端分离
前后端分离。都说前后端分离,前后端分离有什么好处?为什么要前后端分离?BibPipe,将按步就班改成了流水线。原创 2019-01-14 19:15:34 · 965 阅读 · 1 评论 -
大数据基础
这年头,不扯点大数据、云计算都不好意思。以下内容部分抄袭,部分为个人理解。一、啥是大数据 大数据(Big Data)大数据,官方定义是指那些数据量特别大、数据类别特别复杂的数据集,这种数据集无法用传统的数据库进行存储,管理和处理。大数据的特点是4V:数据量大(Volume),数据类别复杂(Variety),数据处理速度快(Velocity)和数据真实性高(Veracity)。好像我在哪里还看过有个原创 2016-04-22 20:19:02 · 8067 阅读 · 0 评论 -
触摸MVP
触摸MVP 左直拳我忽然关心起设计模式来了。听说MVC是主流,现在又有个MVP。惭愧,我两样都不懂。落后啊落后,简直屎一堆。不过这两天还是尝试着用了一下MVP。所谓的MVP,是Model View Presenter 的缩写。Model,模型,……可能是……处理数据对象的实例……真好……;View,视图,界面,UI层吧;Presenter,表示器。这个P,表示器,是专门为视原创 2007-04-30 15:36:00 · 2018 阅读 · 1 评论 -
前端框架们
我司打算搞个地图应用,领导发给我一份ppt,里面有个前端的技术架构图:what!前端技术都进化得这么复杂啦?就搞一个前端,至于用到这么多框架?就问你晕不晕!底部的es6,fetch是基础的语法,这个没什么好讲的。arcgis jsapi,是地图服务接口,也没什么好说的。webpack,打包工具,还行吧。顶部的echarts,经常用,很好用,不错。但ant design是蚂蚁金服的东东,与r...原创 2018-12-27 18:41:19 · 717 阅读 · 1 评论 -
Spring
Spring,Java世界里的基本概念,绕不过去的。但它只是一个框架而已。为啥叫Spring呢?春天?弹簧?估计是弹簧。叫春总不大好吧,这么学术性的场合。然后Spring身后又跟着一大串,SpringMVC,Spring Boot,Spring Cloud。一、SpringSpring主要解决了Bean的实例化和管理工作。Bean是啥?是业务逻辑处理对象。原先在没有Spring之前,ja...原创 2018-12-13 11:59:52 · 708 阅读 · 0 评论 -
架构师基本功:SOA
(以下内容为个人理解,可能不够全面和准确)SOA (service-oriented architecture),面向服务的架构啥是SOA?网上的解释,玄而又玄。俺说点人话,也许不准确,但现阶段我就是酱紫理解的:SOA就是搞一个独立的系统,对外提供服务。其他系统有相同的需求,无须再开发,就调用它的服务即可。一、SOA的优点 1、显而易见,一些功能部署成公用服务,利于重用 2、由于其他系统与服务之原创 2016-03-14 22:56:43 · 3250 阅读 · 0 评论 -
中间件
有时会听到“中间件”这个词,不懂,隐约地觉得很高大上。我直觉那是个跟小型机、UNIX/LINUX、JAVA等牵扯在一起的东东。一、究竟啥是中间件?网络上竟然找不到一个确切的定义。总结起来,中间件是一种独立的软件,位于两个或多个系统之间,起联结通信、数据处理作用。(在众多关于中间件的定义中,比较普遍被接受的是IDC表述的:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间原创 2016-04-06 22:49:48 · 4556 阅读 · 2 评论 -
架构师基本功:消息队列
消息队列是啥?我觉得大家都心知肚明,已经众所周知到不用解释的程度。不过,但凡学习、解释一样东西,都应该遵循 “它是什么?”、 “做什么用?”、 “为啥要用它”、 “它有啥分类” 这个套路,所以首先还是要给个定义。世间无定义,老子只好自己给个定义:消息队列嘛,首先是个队列,先进先出;然后,它传递消息。。。一、消息队列的作用 有高手总结为: 1、异步处理 将不是必须的业务逻辑进行异步处理原创 2016-03-20 08:23:01 · 5218 阅读 · 5 评论 -
Repository模式
最近开发的MVC项目使用了Repository模式。啥是Repository模式?从图看,有一个仓库接口,一个实现了这个仓库接口的基类;然后在使用方,编写一个数据库操作类,一方面,要声明一个继承于仓库接口的子接口,另一方面,继承仓库基类,并实现这个子接口。继承仓库基类容易理解,为啥还要搞一个子接口呢?直接实现仓库接口不就完啦?思考其中原因,应该是为了控制反转,依赖注入,总之一个类对应一个接口就是了。原创 2015-09-22 19:27:19 · 16617 阅读 · 5 评论 -
项目重构的一些想法
来到新公司,接触新项目,傻眼了。居然还是asp.net webform的项目!过去2年,我已经慢慢习惯了asp.net MVC。而开发工具,还是VS2010!真是恍如隔世,难道时光倒流,回到了5年前?看看项目的具体情况,感觉更糟糕:1、可能是历时长久,维护者众且人员更迭,代码也没有严格要求,各种备份包、说明文件随意放在工作目录,有修改的话,代码或文件就复制粘贴,新老文件并存。究其原因,猜测是接手的原创 2015-04-05 11:15:36 · 2509 阅读 · 1 评论 -
CDN
cdn,内容分发网络。主要作用在于加快网站内容在互联网上的传输、响应速度:1)将用户请求引导到就近服务器;2)缓存原始网站内容,快速响应。CDN网络架构有两大部分组成:1)CDN中心包括CDN网管中心和DNS重定向解释中心,负责全局均衡负载。2)CDN节点缓存原始站点内容,CDN中心负责将用户请求引导到最近的CDN节点。每个CDN节点由高速缓存服务器 + 负载均衡器组成。但其实最简单的CDN节点只原创 2015-03-05 19:42:27 · 1780 阅读 · 0 评论