架构

架构,为什么要做服务化?

試著忘記壹切 提交于 2019-12-05 14:02:09
“微服务架构”的话题非常之火,很多朋友都在小窗我,说怎么做服务化?解答“怎么做”之前,先得了解“为什么做”。 画外音:做技术千万不能是这种思路,“别人都在做,所以我们也要搞”。 并不是所有的业务都适合“服务化”,互联网高可用架构,到底为什么要服务化? 服务化之前,高可用架构是什么样的? 在服务化之前,互联网的典型高可用架构如下: (1) 客户端 ,APP,H5,小程序,PC浏览器; (2) 后端入口 ,高可用的反向代理nginx集群; (3) 站点应用 ,高可用的web-server集群; (4) 后端存储 ,高可用db集群; 更典型的,web-server集群通过DAO/ORM等技术来访问数据库。 可以看到,最初是没有服务层的, 此时架构会碰到什么典型痛点呢? 架构痛点一:代码到处拷贝 举一个最常见的业务例子,用户数据访问,绝大部分公司都有一个数据库存储用户数据,各个业务都有访问用户数据的需求。 在有用户服务之前,各个业务线都是自己通过DAO写SQL访问user库来存取用户数据,这无形中就导致了代码的拷贝。 架构痛点二:复杂性扩散 随着并发量的越来越高,用户数据的访问数据库成了瓶颈,需要加入缓存来降低数据库的读压力,于是架构中引入了缓存,如果没有统一的服务层,各个业务线都需要关注缓存的引入导致的复杂性。 对于写请求,所有业务线都要升级代码: (1)先淘汰cache; (2

《基于SSH架构的多层分级党务管理信息系统的设计与实现》论文笔记(十)

家住魔仙堡 提交于 2019-12-05 11:34:15
一、基本信息: 标题: 基于SSH架构的多层分级党务管理信息系统的设计与实现 时间:2019 来源:知网· 关键词:党务管理 二、阅读内容: ssh框架工作流程: 首先,党费管理用户在系统JSP页面中提交一个用户请求,Struts框架接收到这个请求,并在自己的配置文件Struts-config.xml中查找该请求所对应的Action。查找到匹配的Action之后,检查该Action配置中的属性validate是否为rue,若为true,则要启动数据验证,对属性name所指定的ActionForm进行数据验证。当验证通过或者validate的属性值为fasle,则调用属性type所指定的Action类进行业务处理。系统中实现了Struts框架和Spring框架的整合,所以Struts配置文件中的Action类都使用了Spring框架中封装的代理类 DelegatingActionProxy,通过该代理类可以将业务流程的控制权由Struts框架传递给Spring框架。 当系统调用Spring的代理类时,Spring框架获得了系统业务流程的控制权,Spring将在自己的配置文件applicationContext.xml中查找Struts框架实际调用的Action类

15年老程序员首次分享,年薪200万是怎么做到的

心已入冬 提交于 2019-12-05 11:32:14
亲爱的小伙伴: 你好,我是黄Sir,一名在技术领域从业15年的IT老兵,从刚走入企业的一名程序员到央企的研发经理再到互联网上市公司CTO,直到现在自己创业做CEO,一路走来对技术人员的成长和发展有了越来越多的感悟。 看到了很多技术研发人员长期从事着重复且没有太多技术含量的工作,整日都在被繁重的业务需求压的喘不过气,每日通过体力劳动和加班来获取自己生活的保障以及微弱的加薪晋级机会,更不要谈自己的生活和个人情感规划了,对于大家来说996和日渐稀少的发丝才是标配,连想要升职加薪的想法都慢慢变得微弱,甚至已经向生活妥协。 从新兵蛋子走向研发负责人的成长史 想起十几年前的自己刚刚从学校毕业走向工作岗位,也是壮志满怀,希望通过努力改变自己的人生,确实我也做到了,但非常辛苦…… 记得当时自己所在的项目是一个在甲方现场研发的项目,主要业务方向是金融行业(请大家不要对号入座,这里只谈我自己的成长感受),项目组常年保持在50人以上的团队, 作为一个年轻程序员非常憧憬成为研发经理,研发总监,但在这样一个团队里,如何才能脱颖而出呢? 尤其是在这样一个研发环境和研发技术要求以稳定为主的传统行业里则显的更加困难,每一个程序开发人员都只是一个螺丝钉,即便你转的再快也无法使整个环境发生改变,这种状态也是现在刚进入工作的程序员的一个普遍工作状态,虽有工作热情,但能力和经验不足,是难堪大任的

软件架构模式

我怕爱的太早我们不能终老 提交于 2019-12-05 11:17:57
阅读 《clean architecture》 也花了较长的时间,大致也了解到整洁的架构要做到以下两点: well-isolated components:component是独立部署的最小单元,由一系列遵循SOLID原则的module按照REP、CCP、CEP原则组成。 dependency rule:低层的detail去依赖高层的police 但感觉并没有对架构设计给出可行的参考。 clean architecture 中的架构实例 在 《clean architecture》 的第34章 “The Missing Chapter”(由 Simon Brown 编写)给出了一个具体的案例,用四种架构设计来实现一个 “online book store”。 package by layer 这是最常见的方案,从前往后分为:前端、后台(business logic)、持久化DB。 优点是:简单、容易上手,符合大多数公司的组织架构。 存在的问题: 软件规模和复杂度增加时,三层架构就不够了,需要重新考虑拆分; 分层架构体现不出business domain; PACKAGE BY FEATURE 垂直切分方案,所有的java代码都放在一个package里面 好处在于凸显domain concept PORTS AND ADAPTERS clean

Java-技术专区-技术栈分析辨证方法

僤鯓⒐⒋嵵緔 提交于 2019-12-05 11:12:20
1、好多公司动不动就JVM、高并发、分布式、微服务等等,我没有实际经验。 2、从事Java开发三年了,目前的职位是高级Java工程师,感觉技术和工资都到了瓶颈,对以后的发展方向有些迷茫。 3、加班时间过长,年龄大了,精力严重不够,竞争力远不如年轻程序员了。 4、Java工程师体量庞大,供大于需,导致Java程序员面临更加激烈的竞争。 5、目前做技术管理,薪资25K,但25K基本是天花板了,不甘心。   在我看来,开发三年甚至五六年以上的Java程序员要解决上面的问题无非就是两个层面: 1、技术经验   在技术经验方便,个人感觉你要想有所突破,首先就要形成一套技术体系,从技术的实现原理到技术应用,再到不同技术的优劣比较。因为当前各大公司使用的如火如荼的技术栈,无怪乎那些你已经曾经使用过的东西,只是你需要在这个基础上,让自己更有深度和见解。 2、业务需求能力   在业务需求能力方面,一个公司除了看重技术积累方面,另外还比较注重个人的业务理解和分析能力,如果你在某个领域的业务能力比较强,能够hold住当前的一个业务架构,这样说明你对业务的理解能力是非常到位的。所以在业务方便,首先需要的是结合场景的个人理解,其次是延伸扩展。   裁员并不可怕,没有技术实力才可怕,真正有实力的人不会被埋没。真正有实力的人才能走的更远飞的更高。当你具备这些能力时,你不用担心裁员而是应该考虑我要不要继续留在

阿里云飞天技术汇之“阿里云在线直播技术与应用分享”主题沙龙

北城余情 提交于 2019-12-05 10:18:11
1月19日下午14:00,由阿里云生态技术联盟成员——云顶云主办,阿里云协办的“阿里云在线直播技术与应用分享”主题沙龙在北京海淀区众海加速器成功举办。 本次沙龙活动邀请了2位阿里云技术专家与1位阿里云MVP到现场分享在线直播技术,干货满满!来自国内几十多家企业代表参加了本次活动,同时感谢云栖Techday、大咖说、阿里云合作伙伴赋能平台的大力支持,活动现场阿里云专家跟大家一起进行分享、交流、探讨。 本次沙龙北京作为主会场,天津作为分会场,同时云顶云官网、云栖社区、大咖说三方同步在线直播,线上直播同时观看人数高达2000+。 下面我们一起来看一下当天的火爆现场。 (一)北京主会场现场 大家都在认真倾听嘉宾分享 嘉宾主题演讲 阿里云专家现场一对一答疑 (二)天津分会场(同步直播) (三)嘉宾分享 干货满满 快速搭建移动直播系统 主讲人:阿里云资深产品经理 弦望 弦望老师深入浅出的为大家介绍了如何搭建移动直播平台,同时也分享了时下火热的在线直播答题的架构搭建以及如何设置推流sdk,干货满满! 阿里云资深产品经理 弦望 弦望老师分享阿里云直播技术架构 弦望老师分享直播答题架构 无延时P2P在互动直播中的应用 主讲人:阿里云技术专家 蒲世海 蒲老师是阿里云边缘计算团队技术专家,主要负责PCDN产品的业务研发以及技术支持,对于无延时直播有着非常深的造诣

每个 JavaScript 工程师都应当知道的 10 个面试题

元气小坏坏 提交于 2019-12-05 09:43:42
1. 能说出来两种对于 JavaScript 工程师很重要的编程范式么? JavaScript 是一门多范式(multi-paradigm)的编程语言,它既支持命令式(imperative)/面向过程(procedural)编程,也支持面向对象编程(OOP,Object-Oriented Programming),还支持函数式编程(functional programming)。JavaScript 所支持的面向对象编程包括原型继承(prototypal inheritance)。 面试加分项 原型继承(即:原型,OLOO——链接到其它对象的对象); 函数式编程(即:闭包(closure),一类函数(first class functions),lambda 函数:箭头函数)。 面试减分项 连范式都不知道,更别提什么原型 OO(prototypal oo)或者函数式编程了。 深入了解 The Two Pillars of JavaScript Part 1:JS 两大支柱之一:原型 OO The Two Pillars of JavaScript Part 2:JS 两大支柱之二:函数式编程 2. 什么是函数式编程? 函数式编程,是将数学函数组合起来,并且避免了状态共享(shared state)及可变数据(mutable data),由此而产生的编程语言。发明于 1958 年的

我也要谈谈大型网站架构之系列(2)——纵观历史演变(下)

三世轮回 提交于 2019-12-05 09:13:15
我也要谈谈大型网站架构之系列(2)——纵观历史演变(下)   这篇文章本来准备前几天就得写的,谁也没想到这段时间公司的RC太多了,含酸苦逼的加班,加班。。。所以在大一点的公司上班, 写代码的责任心一定要强,或许就因为你的一些小bug,给公司带来不少损失。。。这在以前公司真的没多大体会的。   好了,继续说说架构的演变,从第四代架构中可以看到,我们通过做应用程序层的负载均衡可以比较完美的解决了在整个架构中让应 用程序层不再成为瓶颈,通过A10,我们可以让用户的访问请求分发到集群中的任何一台服务器上,当访问量继续膨胀的时候,我们就可 以继续在集群中增加服务器来解决负载的压力,达到系统的可伸缩性,现在我们的业务规模像滚雪球一样越来越大,用户数暴增。。。这 时候我们缓存中的数据也越来越多,虽然我们用了缓存,但是大量的“ 缓存过期重新读取 ”和“ 缓存不命中 ",导致数据库压力非常大,这时候 数据库的压力成为了我们架构中的瓶颈。 五: 第五代架构    既然数据库成为了我们第四代架构的瓶颈,这时候必须解决数据库的压力问题,最常见的做法也就是“读写分离”,将写和读的库进行拆 分来缓解数据库的压力。    现在我们做了多个库,写的时候进主库,然后数据库分发到从库中,然后应用程序在从库中读取,这里为了让数据库对应用程序更加 透明,我们通常加一个“数据访问层”