精华内容
下载资源
问答
  • 宏观上:1、技术广度方面至少要精通多门开源技术吧,研究过strutsspring等的源码。2、项目经验方面从头到尾跟过几个大项目,头是指需求阶段,包括需求调研。尾是指上线交付之后,包括维护阶段。3、架构经验方面过...

    宏观上:

    1、技术广度方面

    至少要精通多门开源技术吧,研究过strutsspring等的源码。

    2、项目经验方面

    从头到尾跟过几个大项目,头是指需求阶段,包括需求调研。

    尾是指上线交付之后,包括维护阶段。

    3、架构经验方面

    有过分布式系统的架构和开发经验。对于跨系统的结构优化,数据存储的性能指标等有丰富经验。什么缓存啊、数据库的垂直切分什么的,业务的抽象和水平拆分啊,这些应该都轻车熟路吧。

    4、行业领域方面

    最起码得精通一到两门业务吧,所谓精通,就是比如做金融证券业务的,至少等当半个经融分析师。做电力业务的,至少等当半个电力工程师。

    5、个人修为

    有自己一些独到的见解,不会人云亦云啦。

    de1c06378d576736e536c871c636a103.png

    微观上:

    1、你需要精通面向对象分析与设计(OOA/OOD)、涉及模式(GOF,J2EEDP)以及综合模式。你应该十分了解UML,尤其是class,object,interaction以及statediagrams。

    2、你需要学习JAVA语言的基础知识以及它的核心类库(collections,serialization,streams,networking,

    multithreading,reflection,event,handling,NIO,localization,以及其他)。

    3、你应该了解JVM,classloaders,classreflect,以及垃圾回收的基本工作机制等。你应该有能力反编译一个类文件并且明白一些基本的汇编指令。

    4、如果你将要写客户端程序,你需要学习WEB的小应用程序(applet),必需掌握GUI设计的思想和方法,以及桌面程序的SWING,AWT,

    SWT。你还应该对UI部件的JAVABEAN组件模式有所了解。JAVABEANS也被应用在JSP中以把业务逻辑从表现层中分离出来。

    5、你需要学习java数据库技术,如JDBCAPI并且会使用至少一种persistence/ORM构架,例如Hibernate,JDO,

    CocoBase,TopLink,InsideLiberator(国产JDO红工厂软件)或者iBatis。

    6、你还应该了解对象关系的阻抗失配的含义,以及它是如何影响业务对象的与关系型数据库的交互,和它的运行结果,还需要掌握不同的数据库产品运用,比如:oracle,mysql,mssqlserver。

    7、你需要学习JAVA的沙盒安全模式(classloaders,bytecodeverification,managers,policyandpermissions,codesigning,

    digitalsignatures,cryptography,certification,Kerberos,以及其他)还有不同的安全/认证

    API,例如JAAS(JavaAuthenticationandAuthorizationService),JCE

    (JavaCryptographyExtension),JSSE(JavaSecureSocketExtension),以及JGSS

    (JavaGeneralSecurityService)。

    8、你需要学习Servlets,JSP,以及JSTL(StandardTagLibraries)和可以选择的第三方TagLibraries。

    9、你需要熟悉主流的网页框架,例如JSF,Struts,Tapestry,Cocoon,WebWork,以及他们下面的涉及模式,如MVC/MODEL2。

    10、你需要学习如何使用及管理WEB服务器,例如tomcat,resin,Jrun,并且知道如何在其基础上扩展和维护WEB程序。

    11、你需要学习分布式对象以及远程API,例如RMI和RMI/IIOP。

    12、你需要掌握各种流行中间件技术标准和与java结合实现,比如Tuxedo、CROBA,当然也包括javaEE本身。

    13、你需要学习最少一种的XMLAPI,例如JAXP(JavaAPIforXMLProcessing),JDOM(JavaforXMLDocumentObjectModel),DOM4J,或JAXR(JavaAPIforXMLRegistries)。

    14、你应该学习如何利用JAVAAPI和工具来构建WebService。例如JAX-RPC(JavaAPIforXML/RPC),SAAJ

    (SOAPwithAttachmentsAPIforJava),JAXB(JavaArchitectureforXMLBinding),JAXM(JavaAPIforXMLMessaging),

    JAXR(JavaAPIforXMLRegistries),或者JWSDP(JavaWebServicesDeveloperPack)。

    15、你需要学习一门轻量级应用程序框架,例如Spring,PicoContainer,Avalon,以及它们的IoC/DI风格(setter,constructor,interfaceinjection)。

    16、你需要熟悉不同的J2EE技术,例如JNDI(JavaNamingandDirectoryInterface),JMS

    (JavaMessageService),JTA/JTS(JavaTransactionAPI/JavaTransactionService),JMX

    (JavaManagementeXtensions),以及JavaMail。

    17、你需要学习企业级JavaBeans(EJB)以及它们的不同组件模式:Stateless/StatefulSessionBeans,EntityBeans(包含Bean-

    ManagedPersistence[BMP]或者Container-ManagedPersistence[CMP]和它的EJB-QL),或者

    Message-DrivenBeans(MDB)。

    18、你需要学习如何管理与配置一个J2EE应用程序服务器,如WebLogic,JBoss等,并且利用它的附加服务,例如簇类,连接池以及分布式处理支援。你还需要了解如何在它上面封装和配置应用程序并且能够监控、调整它的性能。

    19、你需要熟悉面向方面的程序设计以及面向属性的程序设计(这两个都被很容易混淆的缩写为AOP),以及他们的主流JAVA规格和执行。例如AspectJ和AspectWerkz。

    20、你需要熟悉对不同有用的API和frame work等来为你服务。例如Log4J(logging/tracing),Quartz

    (scheduling),JGroups(networkgroupcommunication),JCache(distributedcaching),

    Lucene(full-textsearch),JakartaCommons等等。

    21、如果你将要对接或者正和旧的系统或者本地平台,你需要学习JNI (JavaNativeInterface) and JCA

    (JavaConnectorArchitecture)。

    22、你需要熟悉JINI技术以及与它相关的分布式系统,比如掌握CROBA。

    23、你需要JavaCommunityProcess(JCP)以及他的不同JavaSpecificationRequests(JSRs),例如Portlets(168),JOLAP(69),DataMiningAPI(73),等等。

    24、你应该熟练掌握一种JAVAIDE例如sunOne,netBeans,IntelliJIDEA或者Eclipse。(有些人更喜欢VI或EMACS来编写文件。随便你用什么了:)

    25、JAVA(精确的说是有些配置)是冗长的,它需要很多的人工代码(例如EJB),所以你需要熟悉代码生成工具,例如XDoclet。

    26、你需要熟悉一种单元测试体系(JNunit),并且学习不同的生成、部署工具(Ant,Maven)。

    27、你需要熟悉一些在JAVA开发中经常用到的软件工程过程。例如RUP(RationalUnifiedProcess)andAgilemethodologies。

    28、你需要能够深入了解加熟练操作和配置不同的操作系统,比如GNU/linux,sunsolaris,macOS等,做为跨平台软件的开发者。

    29、你还需要紧跟java发展的步伐,比如现在可以深入的学习javaME,以及各种java新规范,技术的运用,如新起的web富客户端技术。

    30、你必需要对opensource有所了解,因为至少java的很多技术直接是靠开源来驱动发展的,如java3D技术。

    展开全文
  • Louis主要的兴趣领域是数据库架构和T-SQL编码,并且,他设计过许多数据库,在这许多年中编写过数以千计的存储过程和触发器。  Scott Klein是一位独立咨询师,对SQL Server、.NET和XML相关的所有知识都充满热情。...
  • Louis主要的兴趣领域是数据库架构和T-SQL编码,并且,他设计过许多数据库,在这许多年中编写过数以千计的存储过程和触发器。  Scott Klein是一位独立咨询师,对SQL Server、.NET和XML相关的所有知识都充满热情。...
  • 我们要是的不够好,就比如我想在数据库里面传入一段网址当做图片呗,如下: 网址怎么拿的?CSDN啊,写博客的时候都的,大家注意一下呗 使用技术前后端分离(SpringBoot+Vue) 那么后端就之间传一段网址过来撒...

    前言

    老实讲,当我们学的还不深的时候。遇到想要下面这种情况
    在这里插入图片描述

    我们要是学的不够好,就比如我想在数据库里面传入一段网址当做图片呗,如下:
    在这里插入图片描述

    网址怎么拿的?CSDN啊,写博客的时候都有的,大家注意一下呗
    在这里插入图片描述

    使用技术前后端分离(SpringBoot+Vue)

    那么后端就之间传一段网址过来撒,前端就将网址用img标签输出呗!

    首先我们判断后端是否将网址传过来,如图
    在这里插入图片描述

    所以,我们还剩最后一步,前端将这个数据存入到img标签里面

    对于这个步骤,我想说让人生不如死啊。网上百度好久啥也没有,问了老师,老师也有点没理解我的意思,但是老师讲出来,我并没有get到带你,反正其中艰辛不足为外人道也

    唉,太难了!!!!!

    标记重点一下代码区域:

    在这里插入图片描述
    在这里插入图片描述

    应该懂那个冒号:是什么东西吧?就是那个v-bind,Vue语法里面的引入插值(不太懂的可以去Vue官网看看视频,简单了解一下)

    <!DOCTYPE html>
    <html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml" xmlns:v-bind="http://www.w3.org/1999/xhtml">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <!--		引入vue-->
        <script src="https://cdn.bootcss.com/vue/2.5.16/vue.min.js"></script>
        <!--		引入axios-->
        <script src="https://cdn.bootcdn.net/ajax/libs/axios/0.21.0/axios.js"></script>
        <!--引入 element-ui 的样式,-->
        <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
    
        <!-- 引入element 的组件库-->
        <script src="https://unpkg.com/element-ui/lib/index.js"></script>
    
        <link rel="stylesheet" type="text/css" href="https://www.layuicdn.com/layui/css/layui.css"/>
        <!--    引入layui样式-->
        <script src="https://www.layuicdn.com/layui/layui.js"></script>
    </head>
    <body>
        <div id="app">
            <tr>
                <button @click="findbook">搜索</button>
            </tr>
            <table>
                <!-- thead> 标签定义表格的表头。该标签用于组合 HTML 表格的表头内容。 -->
                <thead>
                <tr>
                    <th>书籍照片</th>
                </tr>
                </thead>
                <tbody>
                <tr v-for="book in image">
    <!--                <td><img :src="image[0].image"/></td>-->
                    <td><img :src="book.image"/></td>
                </tr>
                </tbody>
            </table>
    
        </div>
        <script>
            var app = new Vue({
                el:'#app',
                data:{
                    image:[]
                },
                mounted() {
                    this.findbook()
                },
                methods:{
                    findbook() {
                        var that = this
                        //axios 获取网络
                        axios.post("http://localhost:8088/xiaoxiang/findImage"
                        ).then(function (res) { //请求成功
                            //回调方法里的this,只是调用方法体里面的参数,所以需要在外面将this定义好 JQuery
                            console.log(res.data)
                            that.image = res.data
                            console.log(this.that)
                        }).catch(function (err) { //请求失败
                            console.log(err)
                        })
                    }
                }
    
            })
        </script>
    </body>
    </html>
    

    总体代码我就给了前端,后端有点多,我就没给了…

    最后鸣谢一下我同学大佬的帮助。拜谢

    展开全文
  • 在他运转的过程中,对他进行维护,他集合了网络、系统、数据库、开发、安全、监控于一身的技术。运维又包括很多种,DBA运维、网站运维、虚拟化运维、监控运维、游戏运维等等。运维分类:1)开发运维:是给应用运维...

    运维是指大型组织已经建立好的网络软硬件的维护,就是要保证业务的上线与运作的正常。

    在他运转的过程中,对他进行维护,他集合了网络、系统、数据库、开发、安全、监控于一身的技术。

    运维又包括很多种,有DBA运维、网站运维、虚拟化运维、监控运维、游戏运维等等。

    运维分类:

    1)开发运维:是给应用运维开发运维工具和运维平台的

    2)应用运维:是给业务上线、维护和做故障排除的,用开发运维开发出来的工具给业务上线、维护、做故障排查

    3)系统运维:是给应用运维提供业务上的基础设施,比如:系统、网络、监控、硬件等等

    42a535519bec186e1e8d65e43d27720b.png

    常见工作内容

    服务监控技术:包括监控平台的研发、应用,服务监控准确性、实时性、全面性的保障

    服务故障管理:包括服务的故障预案设计,预案的自动化执行,故障的总结并反馈到产品/系统的设计层面进行优化以提高产品的稳定性

    服务容量管理:测量服务的容量,规划服务的机房建设,扩容、迁移等工作

    服务性能优化:从各个方向,包括网络优化、操作系统优化、应用优化、客户端优化等,提高服务的性能和响应速度,改善用户体验

    服务全局流量调度:接入服务的流量,根据容量和服务状态在各个机房间分配流量

    服务安全保障:包括服务的访问安全、防攻击、权限控制等

    服务自动发布部署:部署平台/工具的研发,及平台/工具的使用,做到安全、高效的发布服务

    服务集群管理:包括服务的服务器管理、大规模集群管理等

    服务成本优化:尽可能降低服务运行使用的资源,降低服务运行成本

    数据库管理(DBA):通过设计、开发和管理高性能数据库集群,使数据库服务更稳定、更高效、更易于管理。

    平台化的开发:类docker等平台的开发管理,及服务接入技术

    Linux运维工作发展过程

    1、手工管理阶段

    1)业务规模

    业务流量不大,服务器数量相对较少,系统复杂度不高。对于日常的业务管理操作,大家更多的是逐台登录服务器进行手工操作,属于各自为战。

    每个人都有自己的操作方式,缺少必要的操作标准、流程机制,比如业务目录环境都是各式各样的。

    2)工作职责

    早期的运维团队在人员较少的情况下,主要是进行数据中心建设、基础网络建设、服务器采购和服务器安装交付工作。

    几乎很少涉及线上服务的变更、监控、管理等工作。

    这个时候的运维团队更多的属于基础建设的角色,提供一个简单、可用的网络环境和系统环境即可。

    2、工具批量操作阶段

    1)业务规模

    随着服务器规模、系统复杂度的增加,全人工的操作方式已经不能满足业务的快速发展需要。因此,运维人员逐渐开始使用批量化的操作工具,针对不同操作类型出现了不同的脚本程序。

    此时,虽然效率提升了一部分,但很快又遇到了瓶颈,操作的质量并没有太多的提升。

    我们开始建立大量的流程规范,比如复查机制,先上线一台服务器观察10分钟后再继续后面的操作,一次升级完成后至少要观察20分钟等。这些主要还是靠人来监督和执行,但在实际过程中执行往往不到位,反而降低了工作效率。

    2)工作职责

    这个时候的运维团队还会承担一些服务器监控的工作,同时会负责LVS、Nginx等与业务逻辑无关的4/7层运维工作。这个时候服务变更更多的是逐台的手工操作,或者有一些简单批量脚本的出现。

    监控的焦点更多的在服务器状态和资源使用情况上,对服务应用状态的监控几乎很少,监控更多的使用各种开源系统如Nagios、Cacti等。

    3、平台管理阶段

    1)业务规模

    在这个阶段,我们决定开始建设运维平台,通过平台承载标准、流程,进而解放人力和提高质量。这个时候对服务的变更动作进行了抽象,形成了操作方法、服务目录环境、服务运行方式等统一的标准。

    通过平台来约束操作流程,如上面提到的上线一台服务器观察10分钟,程序的启停接口必须包括启动、停止、重载等。

    在平台中强制设定暂停检查点,在第一台服务器操作完成后,需要运维人员填写相应的检查项,然后才可以继续执行后续的部署动作。

    2)工作职责

    由于业务规模和复杂度的持续增加,运维团队会逐渐划分为应用运维和系统运维两大块。应用运维开始接手线上业务,逐步开展服务监控梳理、数据备份以及服务变更的工作。

    随着对服务的深入,应用运维工程师有能力开始对服务进行一些简单的优化。

    同时,为了应对每天大量的服务变更,我们也开始编写各类运维工具,针对某些特定的服务能够很方便的批量变更。随着业务规模的增大,基础设施由于容量规划不足或抵御风险能力较弱导致的故障也越来越多,迫使运维人员开始将更多的精力投入到多数据中心容灾、预案管理的方向上。

    4、系统自调度阶段

    1)工作环境

    更大规模的服务数量、更复杂的服务关联关系、各个运维平台的林立,原有的将批量操作转化成平台操作的方式已经不再适合。

    需要对服务变更进行更高一层的抽象,将每一台服务器抽象成一个容器,由调度系统根据资源使用情况,将服务调度、部署到合适的服务器上。

    自动化完成与周边各个运维系统的联动,比如监控系统、日志系统、备份系统等。通过自调度系统,根据服务运行情况动态伸缩容量,能够自动化处理常见的服务故障。

    运维人员的工作也会前置到产品设计阶段,协助研发人员改造服务使其可以接入到自调度系统中。

    2)工作职责

    业务规模达到一定程度后,开源的监控系统在性能和功能方面,已经无法满足业务需求;

    大量的服务变更、复杂的服务关系,以前靠人工记录、工具变更的方式不管在效率还是准确性方面也都无法满足业务需求;

    在安全方面也出现了各种大大小小的事件,迫使我们投入更多的精力在安全防御上。逐渐的,运维团队形成之前提到的5个大的工作分类,每个分类都需要有专精的人才。

    这个时候系统运维更专注于基础设施的建设和运维,提供稳定、高效的网络环境,交付服务器等资源给应用运维工程师。

    应用运维更专注于服务运行状态和效率,数据库运维属于应用运维工作的细化,更专注于数据库领域的自动化、性能优化和安全防御。

    运维研发和运维安全提供各类平台、工具,MT5使用进一步提升运维工程师的工作效率,使业务服务运行得更加稳定、高效和安全。

    Linux运维工作分类

    1、应用运维(SRE):

    应用运维负责线上服务的变更、服务状态监控、服务容灾和数据备份等工作,对服务进行例行排查、故障应急处理等工作

    工作职责如下:设计评审、服务管理、资源管理、例行检查、预案管理、数据备份。

    2、系统运维(SYS):

    负责IDC、网络、CDN和基础服务的建设(LVS、NTP、DNS);负责资产管理,服务器选型、交付和维修,网络建设、LVS负载均衡和SNAT建设。

    3、运维开发

    是给应用运维开发运维工具和运维平台的,主要包含的平台:工单系统、CMDB、监控系统、ELK日志系统、CI/CD、LDAP、FAQ、培训系统、OpenStack平台

    4、数据库运维(DBA):

    数据库运维负责数据存储方案设计、数据库表设计、索引设计和SQL优化,对数据库进行变更、监控、备份、高可用设计等工作,详细的工作内容如下:

    设计评审、容量规划、数据备份与灾备、数据库监控、数据库安全、数据库高可用和性能优化、自动化系统建设、运维研发、运维平台、监控系统、自动化部署系统。

    5、运维安全(SEC):

    运维安全负责网络、系统和业务等方面的安全加固工作。进行常规的安全扫描、渗透测试,进行安全工具和系统研发以及安全事件应急处理。

    工作内容如下:安全制度建立、安全培训、风险评估、安全建设、安全合规、应急响应。

    63f6940e8d69a3d7e2ab32387da9bf9b.gif

    为了方便广大Linux爱好学习者一起学(聚)习(众)交(搞)流(基),特开设微信/QQ网络运维Linux交流群,里面已经上传大量Linux学习资料,欢迎广大运维工程师进群学习!

    扫我入微信群?

    bb3f437a5330ca55c5ce08be1e4776bc.png

    我就知道爱学习的你“在看”23685fc4746647c0638d368c6442aaa2.gif
    展开全文
  • 我们曾经的服务-单体服务 我们对于一个新模块开发时,好多小伙伴就会问为什么我们要搞微服务架构,一个项目把代码从头撸到尾不是很方便吗,开发更快速...的甚至是服务+页面+数据库都在一台机器上直接就上到网上了给

    我们曾经的服务-单体服务

    我们对于一个新模块开发时,好多小伙伴就会问为什么我们要搞微服务架构,一个项目把代码从头撸到尾不是很方便吗,开发更快速,部署也容易。如果使用微服务,涉及的技术就一大堆,中间还容易出现各种不一致的问题。对于这种问题怎么回答呢?那我们就先看看我们以前做个B-S服务是啥样的吧。。。
    在这里插入图片描述
    最开始我们都是弄一个tomcat(服务容器)+mysql(数据库)直接就把项目打成war包扔到tomcat下直接启动部署,通过浏览器就可以访问了。有的甚至是服务+页面+数据库都在一台机器上直接就上到网上了给用户提供服务了。那个时候我们主要主流技术(B-S)架构大概是这样的:

    • 阶段一:jsp(页面)+java+struts1+hibernate+spring+mysql
    • 阶段二:jsp(页面)+java+struts2+hibernate+spring+mysql
    • 阶段二:jsp(页面)+java+springMVC+mysql

    可能随着用户的增加慢慢的出现服务瓶颈,比如服务卡顿,页面返回慢。就出现了多服务部署,用nginx做个反向代理,像下面的情况:
    在这里插入图片描述
    之后又发现数据出现瓶颈,做成主从架构来增加读的服务器,主数据库保证数据的一致性,使用从服务分担查询请求,主服务器会把数据同步到从服务器中实现数据的最终一致性。当然这个架构可以还是会遇到性能瓶颈,不过可以暂时用上很长一段时间了。
    慢慢的配上缓存,如果配上缓存,静态文件分离,性能会得到进一步提升。一般的项目到达这一步足以应对大多数的需求。
    在这里插入图片描述
    上面说的系统架构,应用服务器只是被克隆多个然后分别部署不同的,每一台应用服务器上的代码都是一模一样。就像原肆虐我们的病毒,病毒分化后所有的病毒细胞都具有同样的功能,从服务角度上看这种虽然一段时间内可以撑起正常的业务但是服务的可扩展性以及服务的容错性很差,往往增加一个小功能就得大面积发布容易出错,另外从成本控制角度上看耗费了大量得资源。
    此时可能出现的问题:

    1. 软件可用性风险增加。可能一个bug导致整个软件不可用。
    2. 代码可维护性变差,因为代码量大,逻辑复杂,只有少数老员工能全部理解。代码腐化严重。
    3. 修改bug和增加新功能会变得困难,可能牵一发而动全身。
    4. 软件扩展变得困难,新增功能需要考虑是否影响原功能。
    5. 打包编译会耗时很久,导致发布也很耗时。

    接下来我们看一下微服务是怎么改变现状得,不同应用服务器承担的职责开始变化,就像我们的造血干细胞出现让细胞开始分化成为身体各个器官一起协同工作。

    我们现在的服务-微服务

    我感觉微服务不是一个架构,而是像一个生态,应用与应用之间互相独立,却又彼此依赖。通过 DDD 的模型来设计一个地图,把合适的代码放到合适的地方去。实现微服务涉及的工具太多,以下我采用spring生态来描述整个微服务生态架构,小伙伴可以体会一下。来个宏观图体会一下微服务是啥样的:
    在这里插入图片描述
    如上图整个微服务的生态与周边大概就是这样的。架构也很难一开始就设计的完美,架构不是设计出来的,甚至不能被设计,只能在需求的变化中不断演进。整个架构工作更像药剂师那样对症治病、照方抓药。软件很大程度上是一个服务行业,虽然长期以来都毫无根据地被错认为是制造行业。这句话对软件行业的描述我觉得十分准确。

    微服务优势

    1. 应用小,可快速编译部署
    2. 单个微服务维护性变高,修改容易,因为每个团队独立负责一块功能。新功能交付变快,可以快速开发交付
    3. 扩展性变高
    4. 可靠性变强,可以部署很多独立的服务

    微服务不足

    • 整体复杂度变高。
    • 微服务变多,怎么监控所有微服务,保证服务稳定,运维变的复杂。
    • 分布式数据一致性、分布式事务
    • 服务保障一个服务出了问题,如何才能不影响其他服务

    微服务这个生态涉及很多周边技术以及需要解决的问题,具体涉及整个微服务生态技术我会在下边简单介绍,但是注意一点不是在项目中使用以下提到的技术就是微服务,而微服务指的是业务之微,技术只是对其进行落地实现;所以我们想要设计好整个微服务架构那么对业务必须十分熟悉,根据业务进行微服务拆分最终辅以技术实现达到最终目的。

    微服务架构是为了适应业务的快速变化,产品的快速迭代、交付、反馈和修改而提出的一种架构解决方案。

    注册中心(Erurka)

    注册中心主要提供三个核心功能:

    1. 服务注册
      服务提供者启动时,会通过 Eureka Client 向 Eureka Server 注册信息,Eureka Server 会存储该服务的信息,Eureka Server 内部有二层缓存机制来维护整个注册表
    2. 提供注册表
      服务消费者在调用服务时,如果 Eureka Client 没有缓存注册表的话,会从 Eureka Server 获取最新的注册表
    3. 同步状态
      Eureka Client 通过注册、心跳机制和 Eureka Server 同步当前客户端的状态。

    网关(Zuul)

    API网关是一个更为智能的应用服务器,它的存在就像是整个微服务架构系统的门面,所有的外部客户端访问都需要经过它来进行调度和过滤。除了需要实现请求路由,负载均衡及校验过滤等功能外还需要与服务治理框架的结合,请求转发时的熔断机制,服务的聚合等一系列高级功能。
    主要核心功能:

    1. 服务路由转发
    2. 鉴权校验过滤
    3. 熔断限制保护

    配置中心(Config)

    Spring Config首推基于git的管理方式,提供了两个管理维度,一个是label(即branch),一个是profile。其实他的原理是基于git的变化来通知各个服务的有些不太灵活,以后文章中会采用nacos替换这个config功能,现在先了解一下他是干嘛的就可以了。
    主要核心功能:

    1. 业务配置
    2. 功能开关
    3. 服务配置

    服务APM(Grafana)

    grafana 是一个开源的时序性统计和监控平台,支持例如 elasticsearch、graphite、influxdb 等众多的数据源,并以功能强大的界面编辑器著称。我们可以通过这个平台监控所有服务的负载,流量,使用率,机器硬件相关参数,以及可以配置相关参数通过http或者短信邮件报警提醒等。目前APM工具很多这个只是其中的一种,付费的平台也又很多像听云等平台。

    异步队列(MQ)

    MQ大家都熟悉,现在主流的MQ有rabbitMQ,rocketMQ,kafka。三者的区别我会在以后的文章介绍对比,以及不同场景应该使用哪种MQ。以及在使用过程中的消息顺序性,幂等性保证等踩坑记录。
    核心功能:削峰填谷

    容错限流(Hystrix)

    它设计用来当分布式系统发生不可避免的异常的时候去隔离当前服务和远程服务、系统、三方包的联系,防止出现级联失败的情况,从而导致整个系统雪崩。
    主要核心功能:

    1. 失败转移和优雅降级
    2. 实时监控更改相关配置
    3. 基于线程和信号量的断路器隔离

    负载均衡+服务调用(Ribbon、Feign)

    ribbon是一个负载均衡客户端,可以很好的控制htt和tcp的一些行为。Feign默认集成了ribbon。ribbon主要功能是提供客户端的软件负载均衡算法。Ribbon就属于进程内负载均衡,它只是一个类库,集成于消费方进程,消费方通过它来获取到服务提供方的地址。
    主要核心功能:负载均衡

    持续集成(Jenkins)

    在项目多的时候,重复操作极大的浪费时间。如果遇到同一时间不同项目组打包项目,打包和部署服务器就要排队使用,测试人员只能在等待中浪费时间。为了解决这些问题,选择寻找合适的持续集成方案。来自动化完成重复的步骤。jenkins还包含了很多插件,比如代码校验等等。是CI/CD的基本技术。
    核心功能:

    1. 拉取代码
    2. 打包构建
    3. 将资源送往目标服务器

    分布式任务调度(Elastic-Job)

    它通过弹性调度、资源管控、以及作业治理的功能,打造一个分布式的任务调度总线。
    核心功能:

    1. 弹性调度
    2. 资源分配
    3. 作业治理
    4. 失效转移

    分布式缓存(Redis)

    这个。。。。还用介绍么。。。多说一句redis这个skiplist跳跃表值得研究一下,另外zset这个数据结构有大用。
    核心功能:

    1. 内存数据库
    2. 基于内存数据库的各种扩展功能

    分库分表(sharding jdbc)

    Sharding-JDBC他定位为轻量级Java框架,在Java的JDBC层提供额外的服务,以jar包形式提供服务,无需额外部署和依赖,可以理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。还有个付费的相似中间件那就是阿里的DRDS,有兴趣的伙伴可以了解一下DRDS。
    核心功能:

    1. 数据分片
    2. 读写分离
    3. 透明的使用jdbc访问各个数据库

    代码托管(Gitlab)

    搞开发的相信都知道这个,相当于这个是github的兄弟。

    日志收集(ELK)

    ELK=Elasticsearch+Logstash+Kibana

    • Elasticsearch:
      是一个基于Apache Lucene的分布式开源搜索引擎,使用Apache2.0开源协议发布(意味着可以免费下载、使用或者修改)。它在Lucene的实时搜索之外提供了可扩展性、可靠性和多租户功能。Elasticsearch的功能可以通过基于JSON的RESTfulAPI来使用 。
    • Logstash
      提供了输入插件来支持不同的数据源和平台,设计用来高效地处理日志、事件和非结构化数据源,然后通过输出插件如文件、标准输出。
    • Kibana
      是一个基于Apache2.0开源协议的开源数据可视化平台。它可以对存储于es的索引中的各种结构化和非结构化的数据进行可视化呈现

    容器化(Docker+k8s)

    通过 Docker 技术,我们可以像管理我们的应用一样管理我们的基础设施(比如基础依赖等,这里的具体技术其实就是镜像)。通过 Docker 技术,我们可以精简我们的整个开发和交互流程。docker可以做到应用程序和底层基础设施分离,我们可以将这些依赖和应用程序都打包到镜像中,然后测试或者正式上线的时候只需要将整个镜像部署上去就可以了,不需要关心目标服务器上面的基础环境。k8s(Kubernetes )它可以自动化应用容器的部署、扩展和操作 , 提供以容器为中心的基础架构。通俗的讲就是管理docker的。

    等等。。。包括在各个模块中注意的点。我会在以后的文章中分析各个模块的作用和在微服务中的地位以及踩过的坑。想了解的小伙伴记得收藏+关注哈。

    展开全文
  • 我们再看框架源码的时候经常看到log输出日志,而不是我们平时的 System....有啥区别?区别可大了,log不但可以输出日志到控制台上面,而且可以输出到文件、数据库,甚至是通过网络进行传输,这就实现了我们记录...
  • Java从零开始开发一个物联网项目

    千人学习 2019-07-21 17:05:29
    遇到这样的问题,大部分同学们都直接熄火,完全不知所措,为呢,因为他在项目中根本没有过这个技术,只是看了文档、视频,只是跟着教程做了Demo。而技术跟业务如何结合,这应该是大部分同学在工作中最薄弱的环节...
  • REDIS基础学习笔记

    2019-09-28 15:54:05
    一项基于分布式缓存的nosql数据库技术。能干嘛?做分布式缓存呗。 为什么它?一般来说,每一项新技术的出现,都其历史背景及使命(要解决的问题),技术来源于问题。为什么已经了传统的关系型数据库,还要非关系...
  • 其他知友都提到了,如果自己研究毕设topic,可以考虑自己把...所以,如果时间够,墙裂建议你自己设计业务场景,画出流程图,设计好数据模型,做技术选型,一边写文档,一遍画PPT,然后设计数据库表(数据库设计推荐...
  • 该开源仓库的文章都是我个人原创,公众号发过的技术文章(干货)也会相关的目录整理,很多知识点我还在不停的总结和完善。点击关注【Java3y公众号】 及时获取最新文章 :sparkling_heart:我希望这个开源仓库: 能...
  • 最近刚servlet,在eclipse里做的。servlet的doPost(),doGet()方法也了,表单,数据库也做了。 有个问题,servlet每次doPost(),doGet(),处理时...还想问问servlet去println图片好麻烦,有啥好方法,或者换种技术
  • 基于SSM框架的家庭财政管理系统,报表技术,上传等,访问地址:localhost:端口号/ffms,开发工具是Eclipse,数据库用的mysql,jdk版本1.8,tomcat的8.0,登录密码是admin,123456,这个是MAVEN工程,本地仓库的...
  • myBlog-源码

    2021-03-21 05:00:04
    代码质量问题轻点喷(去年才学的前端),有啥建议欢迎联系我,联系方式见最下方,感谢! 这是一套包含前引用代码的个人博客系统,欢迎各位提出建议,本来打算nuxt来书写,但是想了react之后next来写,后面会...
  • 目前新进一个公司,的应该是SpringMVC +ftl模板,他们技术不是form表单,据说配置,比如ftl名字是user_register,ftl,访问地址是:localhost:8080/test/user!toRegister.action.那么在UserAction里面就...
  • 网站很麻烦,各种子论坛的,而且数据库有mysql,mssql.整得麻烦啊,还现配了iis下的php环境。挺累的,早上一直干到下午1点多,没有吃东西 ,饿得都不行了。最后整完了才出来跟...
  • 自学docker时这个项目精心实践,不用本地安装数据库啥的,(仅效果预览)推荐使用这种方法!!! 首先安装,如果安装过就不需要了。 (方案1)自己重建,需要等待重新加载。终端在该项目目录下运行docker image ...
  • c、c++、Java、数据库MySQL、ORACLE、数据结构、计算机组成与原理、计算机网络、移动平台开发、语言、html、js、c#、vue也过。 然后是讲毕设的构造,实现了哪些,巴拉巴拉,还有用了哪些技术,框架? 后台...
  • 月底总结: 这个月从双十一一直加班到现在十一月三十日,全组项目人员007的那种,所以这...初步是整合且复习一下自己的知识体系,大概的技术有,springCloud组件,消息中间件,数据库分库分表,nginx,流量分发,k8...
  • Lombok有啥牛皮的?SpringBoot和IDEA官方都要支持它! 干掉mapper.xml!MyBatis新特性动态SQL真香! 数据库迁移搞炸了!没用这款开源神器的锅? 工具篇 一些常用开发工具的使用 IDEA常用设置及推荐插件 Navicat...
  • 温度的技术,改善上亿人的生活 千万别强制停机!我嘴都气歪了!【文末红包】 如何去除字符串中的 "\n" ? 实战 | 五分钟,使用Typora+PicGo提升百倍写作效率 如何 IDEA 提升十倍开发效率? GitHub 保姆 让你的 ...
  • 疯狂的程序员

    热门讨论 2012-07-18 18:05:32
    既然没有电脑,那要电脑着什么呢?还占着地方。唯一不同的是寝 室里的一个人――和别的不一样,这间寝室个不属于这个班的人――他叫王江。 王江他特别,不仅因为他不是这班的,还因为他吹的牛皮很特别。 大一...
  • 老大说:谁要再double定义商品金额,就自己收拾东西走 为什么我们要面向接口编程?! 恕我直言,我怀疑你没怎么过枚举 一文详解序列化和反序列化 对不起我拖后腿了!我才刚上Java 11 答应我,别再if/else走...
  • 有用不完的劲儿,但是工作经验不多,对各种行业实际应用没有深入的了解,大多停留在表面问题上,做不出过硬的质量的软件组件来,刚精通C#程序时,发现又需要精通C/S、B/S才可以,这时又发现自己的数据库技术不过关...
  • 有用不完的劲儿,但是工作经验不多,对各种行业实际应用没有深入的了解,大多停留在表面问题上,做不出过硬的质量的软件组件来,刚精通C#程序时,发现又需要精通C/S、B/S才可以,这时又发现自己的数据库技术不过关...
  • 谈谈感想吧,别听什么培训机构诳你什么爬虫工程师前途的,当然学好精爬虫也能拿到高薪,但这一行也不少人了,精通的自然不用说。而且现在很多像八爪鱼、火车头这些可以定制的爬虫软件,还有一些自学习的...
  • 后端技术学 我难道天生就是个架构师?这可是100k并发啊 互联网前沿技术 容器化:Docker与k8s详解 面试技巧 简历怎么写? 能不能好好写简历? 简历这样写,技术人都不直男了! 10个简历小技巧,成为面试...
  • Java 中的 BIO、NIO、AIO 有啥区别? 容器 Java 容器常见问题总结 (必看 ) 源码分析 :ArrayList 源码+扩容机制分析 、LinkedList 源码 、HashMap(JDK1.8)源码+底层数据结构分析 、ConcurrentHashMap 源码+底层...
  • Java 中的 BIO、NIO、AIO 有啥区别? 容器 Java 容器常见问题总结 (必看 ) 源码分析 :ArrayList 源码+扩容机制分析 、LinkedList 源码 、HashMap(JDK1.8)源码+底层数据结构分析 、ConcurrentHashMap 源码+底层...
  • Java 中的 BIO、NIO、AIO 有啥区别? 容器 Java 容器常见问题总结 (必看 ) 源码分析 :ArrayList 源码+扩容机制分析 、LinkedList 源码 、HashMap(JDK1.8)源码+底层数据结构分析 、ConcurrentHashMap 源码+底层...

空空如也

空空如也

1 2
收藏数 37
精华内容 14
关键字:

学数据库技术有啥用