架构

图解微服务架构演进

牧云@^-^@ 提交于 2020-01-10 11:06:25
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 原文出处: 泥瓦匠BYSocket 前言 来自 dubbo的用户手册 中的一句话: 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。 常规的垂直应用架构就相当于传统的那种,现阶段传统垂直架构改造的核心就是对应用做服务化改造,服务话改造使用的核心技术架构就是分布式服务框架。 其实这篇是概念上的总结,技术概念软文,纪录此文让自己更明白什么是微服务化架构。 服务化架构演进 请看下图,也来自 dubbo的用户手册 ,图中恰恰少了微服务架构的图。 那什么是微服务架构呢? 先从第一个图中第一个说起吧。 1.orm – 单一应用架构 我认为是一个高内聚版本,所有功能部署在一起。数据访问框架(orm)成为关键。这个架构很少被人使用,几乎接近灭绝了吧。 优点:成本低,适合功能少又简单 缺点:很多,比如无法适应高流量,二次开发难,部署成本高 2.mvc架构 - 垂直应用架构 当访问量渐渐增大,慢慢演化成用的很多的mvc架构。虽然还是所有的功能都是部署在同一个进程中,但是可以通过双机或者前置负载均衡来实现负载分流。这样应用也可以拆分成不同的几个应用,以提升性能和效率。 此时,mvc架构用于分离前后端逻辑。一方面,有一定的模块化

02-CPU基础知识:通俗易懂方式理解主频、核心、线程、缓存、架构

北战南征 提交于 2020-01-10 11:01:52
我们通常会将CPU比喻为人类的大脑,是计算机的核心硬件,决定了一台电脑的运算性能好坏。我们在选购CPU的时候,通常都会在网上查询处理器型号参数,主要是看主频、核心、线程、缓存、架构等参数,那么对于小白我们要如何理解这些呢,下面装机之家分利用通俗易懂方式理解主频、核心、线程、缓存、架构,来学习一下吧。 CPU基础知识 一、架构(关键) CPU的架构越新越好,所谓的架构老与新,我们可以理解为有两个人搬砖,老架构的使用的落后的设备搬砖,而新架构使用的是更先进的设备搬砖,因此架构对性能的影响巨大,也是CPU最重要的参数之一。 新老架构区别 二、主频 主频也是大家比较关心的参数之一,CPU的主频又叫CPU内核工作的时钟频率,我们也可以理解为CPU运算速度。CPU主频相当于人的力量,主频越高,那么力量(性能)则越大。 主频 三、核心/线程 核心也就是所谓的核心数量,指的是CPU几核的,例如双核、四核、八核等,我们可以比喻为人的胳膊,双核就是两条胳膊,四核就是四条胳膊,胳膊越多我们同时进行的任务越多。单核单线程我们可以理解为一条胳膊长一只手,例如双核配双线程或者双核四线程、四核八线程的处理器,由于技术越来越厉害,造出了一条胳膊长两只手的情况,这样干活的效率也就大大的提升了。 五、缓存 而缓存也是CPU中重要的参数,一般来说,CPU运算速度较快,而内存读写速度跟不上时

laravel_5《数据库迁移》

穿精又带淫゛_ 提交于 2020-01-10 08:51:35
Laravel鼓励敏捷、迭代的开发方式,我们没指望在第一次就获得所有正确的。相反,我们编写代码、测试和与我们的最终用户进行交互,并完善我们的理解。 对于工作,我们需要一个配套的实践集。我们使用像subversion、GIT或Mercurial这些版本控制工具来存储应用程序的源代码文件,使我们能够撤消错误和追踪开发过程中的改变。 但应用程序更改时,存在我们不能单独使用版本控制进行有效管理的区域。在我们的开发进度中,Laravel应用程序的数据库架构不断演变:我们在这里添加了一个表,在那里重命名列,删除索引等等。数据库的改变与应用程序代码步调一致。 你需要一个复杂的方法来跟踪您的数据库架构更改,通常有几种方法: 当您在开发团队内工作时,每人都需要知道关于任何架构的更改。 当你在生产服务器上部署时,您需要有稳健的方式来升级您的数据库架构。 如果您在多台机器上工作,你需要保持所有数据库架构的同步。 如果没有严格的约定和纪律让应用程序开发者遵循,保持数据库架构与应用程序代码同步历来是一个非常麻烦的工作。开发者(或数据库管理员) 进行所需的架构更改。但是,如果应用程序代码回滚到以前的版本,但是很难撤消数据库架构更改,照成数据库版本信息与应用程序代码版本信息不一致。 迁移就是帮助你进化你的应用程序数据架构的Laravel方式,它不需要你在每次改变的时候删除或者重建数据库

Istio:架构与技术

混江龙づ霸主 提交于 2020-01-10 07:15:29
大纲 前言 为什么使用 Istio? Service Mesh Istio 架构基础 Istio 基本概念 Istio & Kubernetes:架构结合 运行第一个Istio集群 前言: 在后 Kubernetes 时代,服务网格(Service Mesh)技术已完全取代了使用软件库实现网络运维(例如 Hystrix 断路器)的方式。 听说过 Service Mesh 并试用过 Istio 的人可能都会有以下几个疑问: 为什么 Istio 一定要绑定 Kubernetes 呢? Kubernetes 和 Service Mesh 分别在云原生中扮演什么角色? Istio 扩展了 Kubernetes 的哪些方面?解决了哪些问题? Kubernetes、Envoy(xDS 协议)与 Istio 之间又是什么关系? 到底该不该上 Service Mesh? 这是因为 Kubernetes 的本质是应用的生命周期管理,具体来说就是部署和管理(扩缩容、自动恢复、发布)。 Kubernetes 为微服务提供了可扩展、高弹性的部署和管理平台。 Service Mesh 的基础是透明代理,通过 sidecar proxy 拦截到微服务间流量后再通过控制平面配置管理微服务的行为。 Service Mesh 将流量管理从 Kubernetes 中解耦,Service Mesh 内部的流量无需

讲一下创业公司的技术架构演进

柔情痞子 提交于 2020-01-10 00:21:56
  从2015年6月百度离职后,加入创业公司到现在已经将近两年了。新系统的架构随着时间的推移做了非常多的变化以及调整,在这里对自己系统的架构的演进历程以及为什么做这种优化处理做一些总结,并讲述一下各个过程遇到的问题与解决方式。 在创业初期,为了赶上线进度一开始的时候,一切以功能为主,且创业初期资金有限,没有采购太多的服务器资源,因此系统在技术架构层面没有做太多的设计,系统的所有资源都放在一个服务器上,此时系统的架构可以如下:   在这个系统架构上面,通过一个固定IP的Linux机器,使用Tomcat服务器搭建了仅面向PC的Web服务。在这种单服务应用会存在的问题会存在的问题有: 服务不稳定   由于每次代码升级都需要重启服务,会造成服务有小段时间的停服情况。 服务器性能瓶颈   由于单个服务的并发能力有限(tomcat并发处理上线600tps就比较高),且业务和数据库都部署在一个机器上面,随着业务发展,对服务器性能的要求会越来越高。 JVM不方便调优   业务逻辑处理、文件IO操作等都集中在一个应用中,对于JAVA应用来说,由于业务应用中部分逻辑是IO密集型的、部分是CPU密集型的、对内存的要求也是各种各样。这种情况下不方便对JVM的参数进行调优,也不方便对线程池数量进行统一设置。 如果手里的资金足够,可以多采购几台服务器,采用集群式部署方式来是服务更加稳定,采用的架构如下:  

Java面试之RESTful风格接口

泄露秘密 提交于 2020-01-09 23:35:01
1.Restful风格接口简介: 答:Restful这个词,是一个外国人Roy Thomas Fielding在2000年提出的。这个Fielding将他对互联网软件的架构原则,定名为REST,即Representational State Transfer的缩写。这个词组翻译为就是“表现层状态转换”。表现层指定就是资源,如果一个架构符合REST原则,则称它为RESTful架构。这只是一种软件架构风格,而并不是标准,只是提供了一个设计原则和约束条件。主要适用于客户端和服务器端交互的软件,是基于http协议实现。目的是为了提高系统的可伸缩性,降低应用之间的耦合度,方便框架分布式处理程序。基于这个风格的软件可更加的简单,更有层次,更易于实现缓存的机制。 在restful风格中,用户请求的url使用同一个url而用请求方式:get/post/delete/put等方式对请求的处理方法进行区分。这样可以在前后台分离的开发中让前端开发人员不会对请求的资源地址产生混淆,形成一个统一的接口 2.什么是RESTful架构 答:1.每一个URI代表一种资源 2.客户端和服务器之间,传递这种资源的某种表现层 3.客户端通过四个HTTP动词,对服务器端资源进行操作,实现“表现层状态转换” 3.请求方式介 绍 答:在http协议中,四个表示操作方式的动词:GET/POST/PUT/DELETE。 GET

.NET 数据访问架构指南

牧云@^-^@ 提交于 2020-01-09 18:42:09
概述: 本文提供了在多层.NET应用程序中实施基于ADO.NET的数据访问层的指导原则。其重点是一组通用数据访问任务和方案,并指导你选择最合适的途径和技术(68张打印页)。 http://www.microsoft.com/china/msdn/Archives/adonet.asp 来源: https://www.cnblogs.com/ghx88/archive/2006/03/14/349977.html

20200107_微服务架构下的数据库设计原则

白昼怎懂夜的黑 提交于 2020-01-09 18:18:13
微服务架构下的数据库设计原则 对于为服务而言,每一个微服务专注于某个功能,对外提供清晰的服务边界;由于体积小、复杂度低、高内聚、易于维护等特点,很多信息化平台都采用微服务架构。微服务设计中一个很重要的部分就是数据库的设计。 一对一数据库 基本原则是微服务与数据库是一对一的关系。这样主要是出于以下三点考虑: 服务调用清晰,同意通过REST接口或者RPC(或者消息)形式对外提供接口,如果数据库共享后,那么数据库也就成了接口,且根本没法控制接口的职责,性能、安全等因素也随着失控。 有利于问题的定位,大多数问题都是由于数据库数据造成的,如果数据库无法完全掌控,则可能会出现各种各样的问题,毕竟无法预知别人会往数据库插入/删除什么样的数据。 便于性能调优和应用的弹性伸缩,数据库完全掌控了才有可能做这些优化,否则根本无法预知你的扩展和调优,会不会对调用数据库的第三方应用造成什么样的影响。 共享数据 在实际项目中,为了性能和可维护性,可能会打破这种一对一的关系,出现共享数据库。例如一些码表 当一些数据变动不频繁,例如码表之类的,可以通过在各个为服务中单独维护一个这样的数据库表,通过同步的方式进行更新同步,当然这里有很多前提条件,例如变化不频繁。 只读业务数据的访问,最佳方式是通过服务调用,将SQL 层面的操作通过程序来完成,如果性能达不到要求,可考虑采用同步方式,数据库同步有多种

Java架构师必看的10本书

[亡魂溺海] 提交于 2020-01-09 07:51:27
1、大型网站系统与JAVA中间件实践 本书围绕大型网站和支撑大型网站架构的Java中间件的实践展开介绍。 从分布式系统的知识切入,让读者对分布式系统有基本的了解;然后介绍大型网站随着数据量、访问量增长而发生的架构变迁;接着讲述构建Java中间件的相关知识;之后的几章都是根据笔者的经验来介绍支撑大型网站架构的Java中间件系统的设计和实践。希望读者通过本书可以了解大型网站架构变迁过程中的较为通用的问题和解法,并了解构建支撑大型网站的Java中间件的实践经验。 对于有一定网站开发、设计经验,并想了解大型网站架构和支撑这种架构的系统的开发、测试等的相关工程人员,本书有很大的参考意义;对于没有网站开发设计经验的人员,通过本书也能宏观了解大型网站的架构及相关问题的解决思路和方案。 2、大型分布式网站架构设计与实践 本书主要介绍了大型分布式网站架构所涉及的一些技术细节,包括SOA架构的实现,互联网安全架构,构建分布式网站所依赖的基础设施,系统稳定性保障,海量数据分析等内容,深入地讲述了大型分布式网站架构设计的核心原理,并通过一些架构设计的典型案例,帮助读者了解大型分布式网站设计的一些常见场景及遇到的问题。 3、Web信息架构设计大型网站 针对新技术做了全面更新——搭配新颖范例、全新场景及最佳实践信息——但是,其焦点依然放在基础原理上。其结构严谨,图文并貌

我想开发一款小程序,怎样才能快速上手并上线?

南笙酒味 提交于 2020-01-09 04:59:14
欢迎大家前往 腾讯云+社区 ,获取更多腾讯海量技术实践干货哦~ 2017 年 1 月 9 日,微信正式发布了小程序应用。之后,我们陆续收到了一些开发者留言和反馈。这里面,问最多的就是: 我是做开发的,但我没做过小程序开发,现在,我想快速开发一款的小程序,怎么办? 直到如今,类似这样的问题还在不断地涌现。 为此,本期云 +社区技术沙龙,邀请来自腾讯云、微信、NOW直播、有赞等行业顶级技术专家,于4月28号首赴上海,从技术实战的角度,分享最全面的微信小程序设计思路以及开发方案,将你领进「小程序开发」的大门。 点击这里 ,立即报名! Tips:分享内容包括但不限于小程序开发的云上解决方案,serverless后端架构,小游戏底层设计和小程序在直播、电商领域的开发实战…… 分享指南 主题 1:腾讯云小程序解决方案 讲师简介:朱展,腾讯云高级工程师 。多年前后端开发经验,目前负责腾讯云小程序解决方案的演进,规划和开发。 议题概要:现场将分享 l 微信小程序的原理以及微信小程序与 H5、原生App的区别与优劣; l 小程序开发过程中的常见问题,以及如何使用微信小程序解决方案完成小程序的快速开发和部署; l 未来腾讯云微信小程序解决方案的计划与目标,主要是思考如何扩展腾讯云微信小程序解决方案,让小程序开发变得更加快捷简单。 主题 2:serverless小程序后端技术分享 讲师简介:黄文俊