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