1.1 消息中间件1.1.1 模块调用关系分析功能模块梳理如下: 我们已经完成了5个web模块和4个服务模块。其中运营商后台的调用关系最多,用到了商家商品服务、广告内容服务、搜索服务和页面生成服务。这种模块之间的依赖也称之为耦合。而耦合越多,之后的维护工作就越困难。那么如果改善系统模块调用关系、减少模块之间的耦合呢?我们接下来就介绍一种解决方案—-消息中间件。1.1.2 什么是消息中间件消息中间件
2.1 Spring Data Solr简介虽然支持任何编程语言的能力具有很大的市场价值,你可能感兴趣的问题是:我如何将Solr的应用集成到Spring中?可以,Spring Data Solr就是为了方便Solr的开发所研制的一个框架,其底层是对SolrJ(官方API)的封装。2.2 Spring Data Solr入门小Demo2.2.1 搭建工程创建maven工程 springdatasol
1.3.1 IK Analyzer简介IK Analyzer 是一个开源的,基亍 java 语言开发的轻量级的中文分词工具包。从 2006年 12 月推出 1.0 版开始, IKAnalyzer 已经推出了 4 个大版本。最初,它是以开源项目Luence 为应用主体的,结合词典分词和文法分析算法的中文分词组件。从 3.0 版本开始,IK 发展为面向 Java 的公用分词组件,独立亍 Lucene
1.1什么是Solr大多数搜索引擎应用都必须具有某种搜索功能,问题是搜索功能往往是巨大的资源消耗并且它们由于沉重的数据库加载而拖垮你的应用的性能。这就是为什么转移负载到一个外部的搜索服务器是一个不错的主意,Apache Solr是一个流行的开源搜索服务器,它通过使用类似REST的HTTP API,这就确保你能从几乎任何编程语言来使用solr。Solr是一个开源搜索平台,用于构建搜索应用程序。 它建
第1章 Spring相关1.1 什么是控制反转(IOC)?什么是依赖注入? 控制反转是应用于软件工程领域中的,在运行时被装配器对象来绑定耦合对象的一种编程技巧,对象之间耦合关系在编译时通常是未知的。在传统的编程方式中,业务逻辑的流程是由应用程序中的早已被设定好关联关系的对象来决定的。在使用控制反转的情况下,业务逻辑的流程是由对象关系图来决定的,该对象关系图由装配器负责实例化,这种实现方式还可以将对
5.1什么是FastDFSFastDFS 是用 c 语言编写的一款开源的分布式文件系统。FastDFS 为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用 FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。FastDFS 架构包括 Tracker server 和 Storage server。客户端请求 Tracker se
1.1. AngularJS简介AngularJS诞生于2009年,由Misko Hevery 等人创建,后为Google所收购。是一款优秀的前端JS框架,已经被用于Google的多款产品当中。AngularJS有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、依赖注入等等。1.2. AngularJS四大特征1.2.1. MVC 模式Angular遵循
1. 前言JDK1.8已经发布很久了,在很多企业中都已经在使用。并且Spring5、SpringBoot2.0都推荐使用JDK1.8以上版本。所以我们必须与时俱进,拥抱变化。Jdk8这个版本包含语言、编译器、库、工具和JVM等方面的十多个新特性。在本文中我们将学习以下方面的新特性:Lambda表达式函数式接口方法引用接口的默认方法和静态方法OptionalStreams并行数组2. Lambda表
1.安装1.1.安装我们使用的是最新的2017.3.4版本: 双击打开, 选择一个目录,最好不要中文和空格: 然后选择桌面快捷方式,请选择64位: 然后选择安装: 开始安装: 然后勾选安装后运行,Finish: 1.2.首次配置 然后是UI界面选择,有白色和黑色两款,总有一款适合你:把不需要的组件禁用:插件暂时不选择安装,以后有需求还可以来安装:然后进入运行界面:激活: 这里有三种激活方式
1.什么是OpenAPI随着互联网技术的发展,现在的网站架构基本都由原来的后端渲染,变成了:前端渲染、前后端分离的形态,而且前端技术和后端技术在各自的道路上越走越远。 前端和后端的唯一联系,变成了API接口;API文档变成了前后端开发人员联系的纽带,变得越来越重要。没有API文档工具之前,大家都是手写API文档的,在什么地方书写的都有,而且API文档没有统一规范和格式,每个公司都不一样
1.1.什么是有状态?有状态服务,即服务端需要记录每次会话的客户端信息,从而识别客户端身份,根据用户身份进行请求的处理,典型的设计如tomcat中的session。例如登录:用户登录后,我们把登录者的信息保存在服务端session中,并且给用户一个cookie值,记录对应的session。然后下次请求,用户携带cookie值来,我们就能识别到对应session,从而找到用户的信息。缺点是什么?服务
1.1.搜索与商品服务的问题目前我们已经完成了商品详情和搜索系统的开发。我们思考一下,是否存在问题?商品的原始数据保存在数据库中,增删改查都在数据库中完成。搜索服务数据来源是索引库,如果数据库商品发生变化,索引库数据不能及时更新。商品详情做了页面静态化,静态页面数据也不会随着数据库商品发生变化。如果我们在后台修改了商品的价格,搜索页面和商品详情页显示的依然是旧的价格,这样显然不对。该如何解决?这里
1.Elasticsearch介绍和安装用户访问我们的首页,一般都会直接搜索来寻找自己想要购买的商品。而商品的数量非常多,而且分类繁杂。如何能正确的显示出用户想要的商品,并进行合理的过滤,尽快促成交易,是搜索系统要研究的核心。面对这样复杂的搜索业务和数据量,使用传统数据库搜索就显得力不从心,一般我们都会使用全文检索技术,比如之前大家学习过的Solr。不过今天,我们要讲的是另一个全文检索技术:Ela
3.2.1.简介地址;https://www.npmjs.com/package/live-server 这是一款带有热加载功能的小型开发服务器。用它来展示你的HTML / JavaScript / CSS,但不能用于部署最终的网站。 3.2.2.安装和运行参数安装,使用npm命令即可,这里建议全局安装,以后任意位置可用npm install -g live-server运行时,直接输入命令:li
GitHub的主页:https://github.com/surmon-china/vue-quill-editorVue-Quill-Editor是一个基于Quill的富文本编辑器:Quill的官网1.3.3.使用指南使用非常简单:已经在项目中集成。以下步骤不需操作,仅供参考第一步:安装,使用npm命令:npm install vue-quill-editor --save第二步:加载,在js中
将课前资料中的所需文件,上传到/usr/local/leyou目录下: 1.1.单节点FastDFS整个安装过程非常复杂,很容易出错,建议进行多次备份。我们这里不打算安装多台虚拟机,因此会把tracker和storage都安装在一起。 1.1.1.安装gccGCC用来对C语言代码进行编译运行,使用yum命令安装:yum -y install gcc后面会用到解压命令(unzip),所以这里可以用
细心的产品同学会发现京东和淘宝在商品详情页存在明显的差别。以一款 iPhone 14为例,京东在选择款式的时候,详情页会刷新一次,如果是在 PC 端会发现商品详情页的链接是不同的。但在淘宝里面,则不存在这种情况。京东和淘宝的这两种商品展示模式,京东是典型的 以SKU为主体的模式,而淘宝是以 SPU 为主体的展示模式。SPU 和 SKU 定义SPU:Standard Product Unit,标准产
为什么要学习UI框架Vue虽然会帮我们进行视图的渲染,但样式还是由我们自己来完成。这显然不是我们的强项,因此后端开发人员一般都喜欢使用一些现成的UI组件,拿来即用,常见的例如:BootStrapLayUIEasyUIZUI然而这些UI组件的基因天生与Vue不合,因为他们更多的是利用DOM操作,借助于jQuery实现,而不是MVVM的思想。而目前与Vue吻合的UI框架也非常的多,国内比较知名的如:e
0.前言前几天我们已经对后端的技术栈有了初步的了解、并且已经搭建了整个后端微服务的平台。接下来要做的事情就是功能开发了。但是没有前端页面,我们肯定无从下手,因此今天我们就要来了解一下前端的一些技术,完成前端页面搭建。先聊一下前端开发模式的发展。静态页面最初的网页以HTML为主,是纯静态的网页。网页是只读的,信息流只能从服务端到客户端单向流通。开发人员也只关心页面的样式和内容即可。异步刷新,操作DO
后端项目搭建完毕,接下来就是前端页面了。不过在这之前需要一些准备工作。我们需要学习ES6的语法标准。什么是ES6?就是ECMAScript第6版标准。4.1.什么是ECMAScript?来看下前端的发展历程:web1.0时代:最初的网页以HTML为主,是纯静态的网页。网页是只读的,信息流只能从服务的到客户端单向流通。开发人员也只关心页面的样式和内容即可。web2.0时代:1995年,网景工程师Br
学习电商项目,自然要先了解这个行业,所以我们首先来聊聊电商行业1.1.项目分类主要从需求方、盈利模式、技术侧重点这三个方面来看它们的不同1.1.1.传统项目各种企业里面用的管理系统(ERP、HR、OA、CRM、物流管理系统。。。。。。。)需求方:公司、企业内部盈利模式:项目本身卖钱技术侧重点:业务功能1.1.2.互联网项目门户网站、电商网站:baidu.com、qq.com、taobao.com、
通过前面的学习,使用Spring Cloud实现微服务的架构基本成型,大致是这样的:我们使用Spring Cloud Netflix中的Eureka实现了服务注册中心以及服务注册与发现;而服务间通过Ribbon或Feign实现服务的消费以及均衡负载。为了使得服务集群更为健壮,使用Hystrix的融断机制来避免在微服务架构中个别服务出现异常时引起的故障蔓延。 在该架构中,我们的服务集群包含:内部服务
在前面的学习中,我们使用了Ribbon的负载均衡功能,大大简化了远程调用时的代码:String user = this.restTemplate.getForObject("http://service-provider/user/" + id, String.class);如果就学到这里,你可能以后需要编写类似的大量重复代码,格式基本相同,无非参数不一样。有没有更优雅的方式,来对这些代码再次优化
1.1.简介Hystrix,英文意思是豪猪,全身是刺,看起来就不好惹,是一种保护机制。Hystrix也是Netflix公司的一款组件。主页:https://github.com/Netflix/Hystrix/那么Hystix的作用是什么呢?具体要保护什么呢?Hystix是Netflix开源的一个延迟和容错库,用于隔离访问远程服务、第三方库,防止出现级联失败。1.2.雪崩问题微服务中,服务间调用关
在刚才的案例中,我们启动了一个itcast-service-provider,然后通过DiscoveryClient来获取服务实例信息,然后获取ip和端口来访问。但是实际环境中,我们往往会开启很多个itcast-service-provider的集群。此时我们获取的服务列表中就会有多个,到底该访问哪一个呢?一般这种情况下我们就需要编写负载均衡算法,在多个实例列表中进行选择。不过Eureka中已经帮
5.1.认识Eureka首先我们来解决第一问题,服务的管理。问题分析在刚才的案例中,itcast-service-provider对外提供服务,需要对外暴露自己的地址。而consumer(调用者)需要记录服务提供者的地址。将来地址出现变更,还需要及时更新。这在服务较少的时候并不觉得有什么,但是在现在日益复杂的互联网环境,一个项目肯定会拆分出十几,甚至数十个微服务。此时如果还人为管理地址,不仅开发困
微服务是一种架构方式,最终肯定需要技术架构去实施。微服务的实现方式很多,但是最火的莫过于Spring Cloud了。为什么?后台硬:作为Spring家族的一员,有整个Spring全家桶靠山,背景十分强大。技术强:Spring作为Java领域的前辈,可以说是功力深厚。有强力的技术团队支撑,一般人还真比不了群众基础好:可以说大多数程序员的成长都伴随着Spring框架,试问:现在有几家公司开发不用Spr
2.1.RPC和HTTP无论是微服务还是SOA,都面临着服务间的远程调用。那么服务间的远程调用方式有哪些呢?常见的远程调用方式有以下2种:RPC:Remote Produce Call远程过程调用,类似的还有RMI。自定义数据格式,基于原生TCP通信,速度快,效率高。早期的webservice,现在热门的dubbo,都是RPC的典型代表Http:http其实是一种网络传输协议,基于TCP,规定了数
随着互联网的发展,网站应用的规模不断扩大。需求的激增,带来的是技术上的压力。系统架构也因此不断的演进、升级、迭代。从单一应用,到垂直拆分,到分布式服务,到SOA,以及现在火热的微服务架构,还有在Google带领下来势汹涌的Service Mesh。我们到底是该乘坐微服务的船只驶向远方,还是偏安一隅得过且过?其实生活不止眼前的苟且,还有诗和远方。所以我们今天就回顾历史,看一看系统架构演变的历程;把握
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号