首页 文章 精选 留言 我的

精选列表

搜索[智能问数],共10000篇文章
优秀的个人博客,低调大师

案例解读|迁云的灵魂3问,降多少本,增多少效,真平滑否?

近年来,在线教育产业发展十分迅速,在线教育真正打破了时间和空间的限制,使得学员可以随时随地学习,预期2020年将有超过3000亿的市场规模。随着行业不断成熟,国家政策的规范发展使得在线教育的发展进入调整期,烧钱获客的模式不再持续,在兼顾业务发展的同时要注意成本控制。 那就需要注意两大问题。一是服务器资源作为IT基础设施支出的头部预算,如何合理利用服务器资源,按需扩容,节省人力维护成本是关键。第二点是由于教育行业的特殊性,满足国家政策对于互联网教育行业安全等级保护有要求,也是重中之重。围绕这两点,阿里云提供了全面的上云解决方案,帮助客户降本增效。 下面将以H教育客户为案例进行介绍。H教育客户为中小幼、考研留学及职场精英提供多元化的教育产品,包括课程直播、课程点播、互联网在线学习工具等,截止至2018年底已拥有用户接近2亿,是综合性互联网教育平台。 上云如何降本——减少运维消耗是关键 客户从最开始由一台放在宿舍的电脑提供服务,到现在已经拥有分布在多个机房的近千台服务器。随着业务的发展,问题也逐渐暴露,当前以自建IDC为主的模式下,资源利用率不高、部署冗余、运维和基础设备开发人力支出成本高,而且可预见的规模扩大,成本会大幅上升。 帮助客户上云后,优质的IDC和网络资源随时可用,物理环境零人力投入,相对成本线性,实际TCO更低。 图1 自建机房和阿里云TCO对比曲线 上云如何帮助客户增效 在线教育行业用户大部分都是闲时在线学习,晚上是业务高峰,其他时间资源利用率不高,另外H客户的运营推广活动会带来业务高峰考验基础设施支撑能力。在自建IDC的模式下是IT定义业务体量,运营团队与运维团队在推广活动前需规划业务流量,提前准备服务器来应对。 上云后,按需伸缩、即开即用的计算资源帮助H客户快速应对业务高峰带来的挑战,在数分钟内完成原本需数日甚至更长时间的服务配置和部署工作。阿里云利用特有的快速交付和弹性能力,让H客户从全量为业务峰值准备计算力,过渡到贴合业务流量曲线准备计算力,从根本上提升资源利用率和部署效率。同时客户还可根据业务场景组合多种计费类型进一步降低成本(图2)。 图2 利用ECS的弹性计费模型进一步降低TCO 如何通过上云简单达到信息安全等级保护要求 随着面向未成年人的在线教育渗透率逐步上升,国家出台了多项针对在线教育行业的监管政策。教育部和公安部早在2015年就已经联合发布《关于全面推进教育行业信息安全等级保护工作的通知》,今年9月份教育部等八部门印发《关于引导规范教育移动互联网应用有序健康发展的意见》,其中第二章第四条明确要求教育APP提供者需要获得网络安全等级保护定级备案的证明、等级测评报告后进行备案登记。 政策的变化为H客户带来了新的挑战。为通过等保测评,客户在线下机房专门购置了安全硬件设备并投入人力做整改优化。而选择上云,阿里云提供了合规配套整改的安全方案,包括高防、WAF、众测、安骑士、态势感知等安全产品以及云上安全服务,助力客户低成本高效率完成等保备案工作。 上云千般好,如何平滑迁云是关键 不管从行业发展趋势还是客户业务发展的需求来看,上云会带来很大的价值,而上云对业务可能带来的影响是客户决策时顾虑最多的点。为保证H教育某互动教育平台的平滑上云,线上业务不受影响,我们先深入分析了客户云下架构,再根据业务需求设计云上架构以及可行的迁移的方案,逐步执行。 图3 云下架构示意图 云下架构中,业务应用服务分别部署在两个机房,由专线打通。自建MySQL采用同机房主备两台的方式做灾备,另外实时转码占用接近20%的总物理服务器资源,此外除了机房几百TB的NAS存储外,还有多达几PB的云存储文件。 图4 云上架构示意图 云上架构中,考虑到客户的Web应用服务已经实现了微服务化Kubernetes部署,云上对Web应用服务选择容器Kubernetes版无缝迁移,同时采用跨可用区的RDS MySQL高可用版本,相比同机房主备模式,提供更高的可用性。存储使用阿里云OSS,除了提供更高的可用性(不低于99.995%)和数据持久性(不低于99.9999999999%)之外,应用服务访问存储的时候可以走内部流量,节省带宽支出。 图5 迁移示意图 应用服务迁移过程中,使用阿里云 SMC服务器迁移中心服务将在IDC部署的业务应用服务自动、快速、一站式迁移到云上ECS,同时提供工具支持将自建Kubernetes的应用迁移到云上。 数据库迁移上,使用 数据传输服务DTS迁移数据,数据库无需停机且支持双向同步,上云切换过程支持数据库的回退方案。云原生数据库POLARDB提供传统数据库一键迁移上云的能力,客户无需修改底层代码就可完成数据库的上云。 存储服务迁移过程中,客户在上云前有海量的文件,而且大部份是小文件,选择使用阿里云提供的离线和在线的迁移工具来支持文件迁移到OSS,利用CDN的闲时流量迁移,基本没有产生额外的迁移带宽费用(CDN95计费)。对于主要是小文件的bucket,结合 OSS的镜像回源功能,直接将数据源切换到阿里云OSS,无需等待迁移任务的数据同步完成。 从最后实施结果来看,客户的的整个迁移过程很迅速也很平滑,中间多次测试业务流量在云上云下来回切换对用户使用没有任何影响。 小结:上云的价值 1.成本显著优化所有资源按需使用,上云后贴合业务流量曲线准备计算资源,成本大幅优化。客户后续还可结合RI实例券使用弹性伸缩产品进一步降低成本。物理环境零人力投入,部署简化,效率提升,基础设施团队精简,人力投入到业务发展中。2.更高的可用性和安全性线下同机房部署主备数据库切换成云上跨可用区的RDS高可用版本,可用性更高。客户的云上跨可用区部署的高可用架构可根据需要随时升级为异地灾备部署,获得更高的可用性。云上使用WAF,DDOS高防IP等专业安全产品,有专业安全团队更新维护,安全性更高。客户使用免费的防DDOS流量即可满足日常安全需要,在被攻击时,可迅速切换为高版本抵御超大流量的攻击行为,在成本和安全诉求之间找到平衡。3.业务创新上云后释放了操作系统,虚拟化,资源调度,网络研发等基础技术栈资源,聚焦到业务发展和业务创新。云上站在达摩院肩上创新,适用于300+场景的阿里云AI产品家族云上即享.沪江教育研发团队结合教育行业场景使用语音识别,机器翻译等AI产品在做业务尝试和创新。 【附录】 1.本案例涉及到的产品 场景 涉及产品 应用服务 ECS、容器ACK 数据库 RDS MySQL高可用版、PolarDB PostgreSQL 存储 OSS 解析类 云解析、PrivateZone 迁移 DTS数据传输服务、OSS在线迁移服务 其它 SLB负载均衡、CDN、媒体处理(转码) 2.在线教育云上业务参考架构

优秀的个人博客,低调大师

BAT等公司必问的8道Java经典面试题,你都会了吗?

工作多年以及在面试中,我经常能体会到,有些面试者确实是认真努力工作,但坦白说表现出的能力水平却不足以通过面试,通常是两方面原因: 1、“知其然不知其所以然”。做了多年技术,开发了很多业务应用,但似乎并未思考过种种技术选择背后的逻辑。坦白说,我并不放心把具有一定深度的任务交给他。 2、知识碎片化,不成系统。在面试中,面试者似乎无法完整、清晰地描述自己所开发的系统,或者使用的相关技术。平时可能埋头苦干,或者过于死磕某个实现细节,并没有抬头审视这些技术。 前人已经掉过的坑,后来的同学就别再“前仆后继”了! Java基础 1、谈谈你对 Java 平台的理解?“Java 是解释执行”,这句话正确吗? 考点分析: 对于这类笼统的问题,你需要尽量表现出自己的思维深入并系统化,Java 知识理解得也比较全面,一定要避免让面试官觉得你是个“知其然不知其所以然”的人。毕竟明白基本组成和机制,是日常工作中进行问题诊断或者性能调优等很多事情的基础,相信没有招聘方会不喜欢“热爱学习和思考”的面试者。 回归正题,对于 Java 平台的理解,可以从很多方面简明扼要地谈一下,例如:Java 语言特性,包括泛型、Lambda 等语言特性;基础类库,包括集合、IO/NIO、网络、并发、安全等基础类库。对于我们日常工作应用较多的类库,面试前可以系统化总结一下,有助于临场发挥。 下图是我总结的一个相对宽泛的蓝图供你参考。 2、请对比 Exception 和 Error,另外,运行时异常与一般异常有什么区别? 考点分析: 分析 Exception 和 Error 的区别,是从概念角度考察了 Java 处理机制。总的来说,还处于理解的层面,面试者只要阐述清楚就好了。 我们在日常编程中,如何处理好异常是比较考验功底的,我觉得需要掌握两个方面。 第一,理解 Throwable、Exception、Error 的设计和分类。比如,掌握那些应用最为广泛的子类,以及如何自定义异常等。 很多面试官会进一步追问一些细节,比如,你了解哪些 Error、Exception 或者 RuntimeException?我画了一个简单的类图,并列出来典型例子,可以给你作为参考,至少做到基本心里有数。 第二,理解 Java 语言中操作 Throwable 的元素和实践。掌握最基本的语法是必须的,如 try-catch-finally 块,throw、throws 关键字等。与此同时,也要懂得如何处理典型场景。 3、谈谈 Java 反射机制,动态代理是基于什么原理? 考点分析: 这个题目给我的第一印象是稍微有点诱导的嫌疑,可能会下意识地以为动态代理就是利用反射机制实现的,这么说也不算错但稍微有些不全面。功能才是目的,实现的方法有很多。 总的来说,这道题目考察的是 Java 语言的另外一种基础机制: 反射,它就像是一种魔法,引入运行时自省能力,赋予了 Java 语言令人意外的活力,通过运行时操作元数据或对象,Java 可以灵活地操作运行时才能确定的信息。而动态代理,则是延伸出来的一种广泛应用于产品开发中的技术,很多繁琐的重复编程,都可以被动态代理机制优雅地解决。 从考察知识点的角度,这道题涉及的知识点比较庞杂,所以面试官能够扩展或者深挖的内容非常多,比如: 考察你对反射机制的了解和掌握程度。 动态代理解决了什么问题,在你业务系统中的应用场景是什么? JDK 动态代理在设计和实现上与 cglib 等方式有什么不同,进而如何取舍? 4、Java 提供了哪些 IO 方式? NIO 如何实现多路复用? 在实际面试中,从传统 IO 到 NIO、NIO 2,其中有很多地方可以扩展开来,考察点涉及方方面面,比如: 基础 API 功能与设计, InputStream/OutputStream 和 Reader/Writer 的关系和区别。 NIO、NIO 2 的基本组成。 给定场景,分别用不同模型实现,分析 BIO、NIO 等模式的设计和实现原理。 NIO 提供的高性能数据操作方式是基于什么原理,如何使用? 或者,从开发者的角度来看,你觉得 NIO 自身实现存在哪些问题?有什么改进的想法吗? IO 的内容比较多,专栏一讲很难能够说清楚。IO 不仅仅是多路复用,NIO 2 也不仅仅是异步 IO,尤其是数据操作部分,会在专栏下一讲详细分析。 5、如何保证容器是线程安全的?ConcurrentHashMap 如何实现高效地线程安全? 典型回答: Java 提供了不同层面的线程安全支持。在传统集合框架内部,除了 Hashtable 等同步容器,还提供了所谓的同步包装器(Synchronized Wrapper),我们可以调用 Collections 工具类提供的包装方法,来获取一个同步的包装容器(如 Collections.synchronizedMap),但是它们都是利用非常粗粒度的同步方式,在高并发情况下,性能比较低下。 另外,更加普遍的选择是利用并发包提供的线程安全容器类,它提供了: 各种并发容器,比如 ConcurrentHashMap、CopyOnWriteArrayList。 各种线程安全队列(Queue/Deque),如 ArrayBlockingQueue、SynchronousQueue。 各种有序容器的线程安全版本等。 具体保证线程安全的方式,包括有从简单的 synchronize 方式,到基于更加精细化的,比如基于分离锁实现的 ConcurrentHashMap 等并发实现等。具体选择要看开发的场景需求,总体来说,并发包内提供的容器通用场景,远优于早期的简单同步实现。 6、谈谈接口和抽象类有什么区别? 考点分析: 这是个非常高频的 Java 面向对象基础问题,看起来非常简单的问题,如果面试官稍微深入一些,你会发现很多有意思的地方,可以从不同角度全面地考察你对基本机制的理解和掌握。 比如: 对于 Java 的基本元素的语法是否理解准确。能否定义出语法基本正确的接口、抽象类或者相关继承实现,涉及重载(Overload)、重写(Override)更是有各种不同的题目。 在软件设计开发中妥善地使用接口和抽象类。你至少知道典型应用场景,掌握基础类库重要接口的使用;掌握设计方法,能够在 review 代码的时候看出明显的不利于未来维护的设计。 掌握 Java 语言特性演进。现在非常多的框架已经是基于 Java 8,并逐渐支持更新版本,掌握相关语法,理解设计目的是很有必要的。 Java进阶 7、synchronized 底层如何实现?什么是锁的升级、降级? 考点分析: 今天的问题主要是考察你对 Java 内置锁实现的掌握,也是并发的经典题目。我在前面给出的典型回答,涵盖了一些基本概念。如果基础不牢,有些概念理解起来就比较晦涩,我建议还是尽量理解和掌握,即使有不懂的也不用担心,在后续学习中还会逐步加深认识。 我个人认为,能够基础性地理解这些概念和机制,其实对于大多数并发编程已经足够了,毕竟大部分工程师未必会进行更底层、更基础的研发,很多时候解决的是知道与否,真正的提高还要靠实践踩坑。 后面我会进一步分析: 从源码层面,稍微展开一些 synchronized 的底层实现,并补充一些上面答案中欠缺的细节,有同学反馈这部分容易被问到。如果你对 Java 底层源码有兴趣,但还没有找到入手点,这里可以成为一个切入点。 理解并发包中 java.util.concurrent.lock 提供的其他锁实现,毕竟 Java 可不是只有 ReentrantLock 一种显式的锁类型,我会结合代码分析其使用。 8、synchronized 和 ReentrantLock 有什么区别?有人说 synchronized 最慢,这话靠谱吗? 考点分析: 今天的题目是考察并发编程的常见基础题,我给出的典型回答算是一个相对全面的总结。 对于并发编程,不同公司或者面试官面试风格也不一样,有个别大厂喜欢一直追问你相关机制的扩展或者底层,有的喜欢从实用角度出发,所以你在准备并发编程方面需要一定的耐心。 我认为,锁作为并发的基础工具之一,你至少需要掌握: 理解什么是线程安全。 synchronized、ReentrantLock 等机制的基本使用与案例。 更近一步,你还需要: 掌握 synchronized、ReentrantLock 底层实现;理解锁膨胀、降级;理解偏斜锁、自旋锁、轻量级锁、重量级锁等概念。 掌握并发包中 java.util.concurrent.lock 各种不同实现和案例分析。 典型回答: synchronized 是 Java 内建的同步机制,所以也有人称其为 Intrinsic Locking,它提供了互斥的语义和可见性,当一个线程已经获取当前锁时,其他试图获取的线程只能等待或者阻塞在那里。 在 Java 5 以前,synchronized 是仅有的同步手段,在代码中, synchronized 可以用来修饰方法,也可以使用在特定的代码块儿上,本质上 synchronized 方法等同于把方法全部语句用 synchronized 块包起来。 ReentrantLock,通常翻译为再入锁,是 Java 5 提供的锁实现,它的语义和 synchronized 基本相同。再入锁通过代码直接调用 lock() 方法获取,代码书写也更加灵活。与此同时,ReentrantLock 提供了很多实用的方法,能够实现很多 synchronized 无法做到的细节控制,比如可以控制 fairness,也就是公平性,或者利用定义条件等。但是,编码中也需要注意,必须要明确调用 unlock() 方法释放,不然就会一直持有该锁。 synchronized 和 ReentrantLock 的性能不能一概而论,早期版本 synchronized 在很多场景下性能相差较大,在后续版本进行了较多改进,在低竞争场景中表现可能优于 ReentrantLock。 迎工作一到五年的Java程序员朋友们加入Java架构开发:744677563 本群提供免费的学习指导 架构资料 以及免费的解答 不懂得问题都可以在本群提出来 之后还会有职业生涯规划以及面试指导

优秀的个人博客,低调大师

【问题&解决】解决创建Android模拟器时提示"No system images installed for this target"的问...

在创建Android模拟器时间发现提示“No system images installed for this target”问题,无法创建模拟器,如下图: 解决:经上网查证,发现原因在于CPU/ABI选项无法选择,并显示“No system imagesinstalled for this target”,也就是没有适合的系统镜像,即SDK中对应的Android版本没有下载系统镜像,如下图: 下载安装好了之后,重启Eclipse,问题解决,如下图: 本文转自叶超Luka博客园博客,原文链接:http://www.cnblogs.com/yc-755909659/p/4080645.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

答读者问(18):一个大四学生有关专业发展的相关疑问

最近,我收到一位大四学生的邮件,内容如下: 我是大四物联网专业的学生(兼修工商管理双学位),在学校主要学习的是嵌入式这方面的内容,我在csdn论坛里看到就是关于嵌入式行业发展里说这个行业已经有点夕阳行业的状态了,我也想从事it这一行,现在的问题是,算是稍微有点基础,但是不知道往那个方向走(心里是想走一个比较有前途的行业或者说朝阳行业),我想问一下java+安卓和嵌入式那个的前景好一些,我自己现在是熟悉c的编程,50行的代码没问题。就到这一步。另外就是我自己是比较想偏软件那方面的,但是感觉嵌入式的工作多是硬件那方面的。 我的答复如下: 你好! 非常感谢你的来信,同时感谢你对我的信任和对我的博客的关注。一般说来,到了大四,很多的学生都会感到比较的迷茫,不知道自己未来要向哪个方向走。这种迷茫,或者是迷惑,是很正常的。你一定要坚持下来,走过这段“艰苦”的岁月。 从你的邮件中,我发现了这几个问题:1) 你内心可能比较慌乱,写出的邮件条理不是很清楚;2) 你比较容易受周边或网上的言论的影响;3) 你的自信心也不是很强。我只是从邮件中看出来的,如果有不当之处,请见谅。 下面来具体回答你提出的问题。 (1) 有关行业前景的问题。 你在邮件中问我“java+安卓和嵌入式哪个的前景好一些”,我无法给出准确的回答,因为我本人没有在这两个行业中待过。根据我个人的工作经验,对于软件行业来说,只要把一样东西做精了,都是有前途(或者是“钱途”)的。即使一个方向很热,而你做出的东西是“山寨”别人的,或者是毫无亮点,那么也不会有多少用户会使用。 因此,既然你目前在学校主要学习的是嵌入式这方面的内容,那么你就应该继续学下去,把这个专业的基础打牢,并注意加强自身的编程能力的培养。样样都懂,不如精通一样,只要你真正把你的专业学好了,相信找到一个好工作并不难。在这里,也建议你不要相信网上的什么“夕阳行业”这一说。 (2) 有关做软件还是做硬件的问题。 这个问题,我也无法给出准确的答复,要看你的兴趣爱好、专业能力,更要看你能够找到哪方面的工作。你的当务之急不是考虑到底以后要做软件还是硬件,而是先让自己“强大”起来,把本专业的知识学好,争取拿出一份有闪光点的简历。 我的以上建议,请参考。希望你把握好剩下的在校学习时光,努力学习。祝你找到满意的工作,请继续关注本人博客。 周兆熊 2014年10月9日 (本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)

优秀的个人博客,低调大师

MySQL 连接数优化与故障处理实战指南

业务高峰期,数据库突然拒绝连接,抛出“Too many connections”错误——这种场景对运维和开发人员来说并不陌生,甚至有些习惯了。但习惯不等于接受,尤其是当你的 LighthouseDB 实例因为一个配置细节或代码疏漏直接导致服务中断。本文梳理了一套从应急止血到长期治理的「Too many connections」解决方案,用可落地的操作帮你在故障时少走弯路。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册