202109-30 漫谈架构之微服务 目录一、简介二、微服务和单体服务三、微服务的特征3.1、组件服务化3.2、组织的划分3.3、服务之间的通信3.4、去中心化治理3.5、去中心化数据管理3.6、自动化部署3.7、对异常的响应四、总结一、简介服务的划分是根据具体的业务来的,并且可以通过完全自动化的部署机制独立部署。虽然大家都在谈论微服务,但是什么时候应该使用微服务,使用微服务需要注意哪些问题对于很多人来说仍然是一个模糊的概念。本文将会和大家一起探讨一下微... 继续阅读 >
202109-19 如何理解SpringMVC 目录一、SpringMVC简介二、SpringMVC核心组件2.1、DispatcherServlet2.2、HandlerMapping2.3、HandlerInterceptor2.4、HandlerExecutionChain2.5、HandlerAdapter2.6、Handler2.7、ModelAndView2.8、ViewResolver2.9、View三、配置Maven环境变量3.1、Maven介绍3.2、Maven下载安装3.2.1、Maven下载3.2.2、配置环境变量3.2.3、配置Maven配置文件(本地仓库路径、镜像)3.2.4、用Maven创建项目一、SpringMVC简介MVC是我们开发WEB应用... 继续阅读 >
202107-08 解读Serverless架构的前世今生 目录一、Serverless简介二、Serverless开发模式三、Serverless带来的价值1、降低运营复杂度2、降低运营成本3、缩短产品的上市时间四、Serverless现存问题1、完全依赖于第三方服务2、缺乏调试和开发工具3、语言版本五、总结一、Serverless简介Serverless架构的出现,带来了跨越式的变革。Serverless下主机管理、操作系统管理、基础软件的部署运维、资源分配和扩缩容能力全部由云厂商提供,把计算能力做成像水电煤一样的公共服务,这... 继续阅读 >
202107-06 浅谈架构模式变迁之从分层架构到微服务架构 目录前言单体架构分布式架构软件设计中的谬误谬误1:网络是可靠的谬误2:时延是0谬误3:带宽是无限的谬误4:网络是安全的谬误5:网络拓扑一成不变谬误6:只有一个网络管理员谬误7:通信成本为0谬误8:网络是同质的总结前言谈到软件系统设计的方法论,在代码层面,有我们熟悉的23种设计模式(designpattern),对应到架构层面,则有所谓的架构模式(architecturepattern)。它们分别从微观和宏观的角度指导着我们设计出良好的软件... 继续阅读 >
202105-23 Java从单体架构升级到微服务要注意的一些问题 前言由于近年来的移动端的发展和2C模式的红利,一些在风口的企业的业务得到爆发式增长。从架构层面来说,业务驱动技术的变革,所以微服务架构的概念得到很多企业的青睐,因为可以解决服务的大流量和高并发以及稳定性的要求。但是任何架构设计不是一蹴而就的,不能从起步就开始使用微服务,一般都是先通过单体架构来快速实现需求和抢占市场,然后再迭代式扩展。不能一口气吃个胖子。这几年自己有经历从单体到微服务的架构演变,也... 继续阅读 >
202105-02 详解CocosCreator MVC架构 概述这一篇将介绍在游戏客户端常用的架构MVC架构。一个游戏的MVC如下划分:M:1)单例全局的数据中心World,所有游戏模块的数据在World中有入口,2)各个模块自己的数据结构。V:1)通过creator预制体制作的UI界面、场景,2)各个界面显示逻辑的ViewCtrlC:1)全局的MainCtrl,2)各个模块的业务逻辑类ModuleCtrl具体模块先介绍M部分。由于一个模块的数据,在其他模块也有访问的需求,例如好友模块,在聊天的时候也需要访问,在排... 继续阅读 >
202102-20 详解Java 微服务架构 一、传统的整体式架构传统的整体式架构都是模块化的设计逻辑,如展示(Views)、应用程序逻辑(Controller)、业务逻辑(Service)和数据访问对象(Dao),程序在编写完成后被打包部署为一个具体的应用。如图所示:系统的水平扩展如果要对系统进行水平扩展,通常情况下,只需要增加服务器的数量,并将打包好的应用拷贝到不同的服务器,然后通过负载均衡器(Nginx)就可以轻松实现应用的水平扩展。整体式架构的缺点应用复杂度增加... 继续阅读 >
202012-23 深入了解Mysql逻辑架构 Mysql现在是大多数公司企业在用的数据库,之所以用Mysql,一点是因为Mysql是开源软件,一些有能力的公司会基于已有的Mysql架构,进行修改、调整改成适合自己公司的业务需要。一点是因为Mysql免费,相对昂贵的Oracle服务,对于很多刚起步的公司来说,是最适合不过的数据库了。之所以要认识Mysql的逻辑架构,就好比我们自己在做开发时,首先需要先掌握自己系统用的分层架构,这样在开发的过程中,如果有哪个环节产生问题,就... 继续阅读 >
202010-10 MySQL20个高性能架构设计原则(值得收藏) 开源数据库架构设计原则01.技术选型选择成熟的平台和技术,同时是最熟悉的,能做到极致的,用好不用坏,用熟不用生。目前业界的MySQL主流分支版本有Oracle官方版本的MySQL、PerconaServer、MariaDB。02.高可用选择高可用解决方案探讨的本质上是低宕机时间解决方案,可以理解成高可用的反面是不可用,绝大部分情况下数据库宕机才会导致数据库不可用。随着技术发展,开源数据库方面很多高可用组件(主从复制、半同步、MGR、MHA、G... 继续阅读 >
202010-08 Docker 架构简介 Docker包括三个基本概念:镜像(Image):Docker镜像(Image),就相当于是一个root文件系统。比如官方镜像ubuntu:16.04就包含了完整的一套Ubuntu16.04最小系统的root文件系统。容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。仓库(Repository):仓库可看成一个代... 继续阅读 >
202009-27 Springcloud微服务架构基础知识解析 一前言学习微服务要从基础的架构学起,首先你要有个微服务的概念才能学习对吧!!如果你都不知道啥是微服务,就一头扎进去学习,你自己也觉得自己也学不会对吧。本篇文章主要让大家快速了解基础的架构分格,以便于微服务入门。二单体架构单体架构是传统架构,其发展了几十年,我们今天任然还在用单体架构开发,存在即合理;单体架构也就是通常的表现层跟UI界面交互,业务层写业务逻辑,数据DAO层访问数据库。其部署方式也很简单... 继续阅读 >
202009-24 Python爬虫程序架构和运行流程原理解析 1前言Python开发网络爬虫获取网页数据的基本流程为:发起请求通过URL向服务器发起request请求,请求可以包含额外的header信息。获取响应内容服务器正常响应,将会收到一个response,即为所请求的网页内容,或许包含HTML,Json字符串或者二进制的数据(视频、图片)等。解析内容如果是HTML代码,则可以使用网页解析器进行解析,如果是Json数据,则可以转换成Json对象进行解析,如果是二进制的数据,则可以保存到文件做进一步处理。... 继续阅读 >
201604-21 从架构的角度看,如何写好代码? 软件架构实际上包括:代码架构,以及承载代码运行的硬件部署架构。实际上,硬件部署架构最终还是由代码的架构来决定。因为代码架构不合理,是无法把一个运行单元分拆出多个来的,那么硬件架构能分拆的就非常的有限,整个系统最终很难长的更大。所以我们经常会听说,重写代码,推翻原有架构,重新设计等等说法,来说明架构的进化。这实际上就是当初为了完成任务,没有充分思考所带来的后果。这也并不是架构进化的事情,而是个人... 继续阅读 >
201604-18 软件架构到底是要解决什么问题? 前一篇文章简述了什么是软件。那么什么是软件架构呢?按照惯例,我们来看看是什么问题,是谁的问题。要解决谁的问题?如前所述,软件实际上就是把现实生活模拟到计算机中,并且软件是需要在计算机的硬件中运行起来的。要做到这一点需要解决两个问题:一、业务问题具体的现实生活状态下,没有软件的时候,所解决的问题的主体是谁,解决的是什么问题,是如何解决,如何运作的?二、计算机问题 ... 继续阅读 >
201604-18 什么是软件 前面通过四篇文章,把什么是架构,如何做好架构等必要的概念澄清了一下。这些概念对于在各种不同的领域都应该也是有用的,需要读者自行思考,并应用到自己所在的领域中。在这篇文章开始,我们用同样的思考,来看看软件是怎么回事,以及如何运用架构思维,更好的设计和实现软件。冯诺依曼结构,图灵机,以模拟人为目标软件的历史,实际上可以说是用机器模拟人的历史。不管大家(包括在这个历史过程中的参与者)有没有... 继续阅读 >
201604-18 如何做好架构之架构切分 前一篇已经讲了如何识别问题。在识别出是谁的问题之后,会发现,在大部分情况下,问题都迎刃而解,不需要做额外的动作。很多时候问题的产生都是因为沟通的误解,或者主观上有很多不必要的利益诉求导致的。但是总还有一部分确实是有问题的,需要做调整,那么就必须要有所动作,做相应的调整。这个调整就是架构的切分。切分就是利益的调整我们要非常的清楚,所有的切分调整,都是对相关人的利益的调整。为什么这么说呢... 继续阅读 >