JHipster入门,第2部分

所以你回来了! 在本系列的最后一部分中 ,我们采用了单片路线创建了一个JHipster应用程序。 这是红色药丸路线; 生活与您习惯的差不多。

但是也许您喜欢挑战。 也许您想超越红色药丸并尝试蓝色药丸。 在这种情况下,Blue Pill是微服务JHipster方法。

在本博客中,我们将使用JHipster的可用选项来创建微服务架构。 这种方法还有很多工作要做,但是最后,我认为它是有回报的。 获得您最喜欢的饮料并预留一些时间。 这将非常密集。

微服务概述

这些东西到底是什么?

“微服务”架构将前端和后端分开,因此您的应用程序更易于扩展和解决基础架构问题。

这里的想法是尽可能使事物分离。 您可以创建后端并运行它们,而不必与前端上的任何东西绑定在一起,反之亦然。 每个实例都可以有多个实例,并且可以上下旋转而不会影响最终用户。 可能消除应用程序的停机时间。

它使它具有随时间而增长和扩展的能力,而只需很少的架构工作。 后端变得越来越消耗东西,而前端则是向世界展示的输出。 前端几乎可以是任何您想要的东西。 传统网站,移动应用程序或其他您能想到的。

微服务路径

蓝丸

因此,您已决定大吃一口并吞下蓝色药丸。 您想挑战自己吗? 让我们开始吧。

网关

网关是JHipster生成的应用程序(生成时使用应用程序类型微服务网关),用于处理Web流量并为AngularJS应用程序提供服务。 如果要遵循“后端为前端”模式,可以有几种不同的网关,但这不是强制性的。

这几乎将成为所有活动的中心。 它具有前端,因此您可以查看呼叫,内存等。您可以添加/删除用户,以及所有有趣的内容。 这些东西都打包好了,您可以自己查看。 我们在这里不会涉及太多。

登记处

JHipster注册表是使用常规JHipster结构的运行时应用程序,所有应用程序都在该结构上进行注册并从中获取其配置。 我们将不仅仅涉及将其拉下并使用它。 在大多数情况下,它只是“配置”的故乡。 只需克隆存储库并继续。 有关此的更多信息,请参见下文。

https://jhipster.github.io/microservices-architecture/#registry_overview
克隆: https : //github.com/jhipster/jhipster-registry

微服务

微服务是JHipster生成的应用程序(生成它们时使用应用程序类型的微服务应用程序),用于处理REST请求。 它们是无状态的,可以并行启动它们的多个实例以处理重负载。

我们开工吧

网关

在本练习中,我们将非常关注JHipster的微服务指南 。

1.yo jhipster开始
2.选择“微服务网关”
3.回答所有问题 4 。 咖啡时间!!!

该应用程序几乎是一个带有配置以处理所有Web流流量的整体式应用程序

jhipsterseriespart2-1

登记处

如果尚未复制, 请克隆https://github.com/jhipster/jhipster-registry 。 添加到您的项目空间。 继续并启动它。

查找具有@SpringBootApplication批注的Java文件,并将其作为Java应用程序运行。 这适用于下面的每个步骤。

微服务应用

第一件事是创建一个新目录。 随便叫它,然后进入该目录。 现在输入yo jhipster 。 在这里看到那个图案吗?

不过,这次,我们将选择“微服务应用程序”。 回答问题。

这次,只要摇动一下狗的尾巴,就可以使用微服务!

jhipsterseriespart2-2

微服务实战

登记处

如果尚未启动注册表,请继续运行它。 它应该在http:// localhost:8761上运行 。 访问它,并查看它为您提供的基本信息。 然后单击“应用程序”链接。 请注意它是空白。

jhipsterseriespart2-3

网关

现在是时候旋转网关了。 您将在控制台中看到此输出。

----------------------------------------------------------Application 'ExtendedDayGateway' is running! Access URLs:Local: 		http://127.0.0.1:8080External: 	http://192.168.1.4:8080
----------------------------------------------------------
2016-09-13 14:19:29.643  INFO 10856 --- [  restartedMain] c.wwc.extendedday.ExtendedDayGatewayApp  : 
----------------------------------------------------------Config Server: 	Connected to the JHipster Registry config server!
----------------------------------------------------------

请注意,它是如何显示URL的,它还显示了它是从JHipster Registry获得的配置。 我们还来看一下该应用程序。 http://本地主机:8080

jhipsterseriespart2-4

另外,再次在注册表应用程序中查看“应用程序”页面。 http:// localhost:8761 /#/ applications 。

请注意,我们的网关现在显示。 它是自注册的。

jhipsterseriespart2-5

微服务应用

现在,我们有三分之二的项目正在运行。 我认为,现在该是该情况的绝对动力了。 我们将添加微服务应用程序,它将为任何请求提供“后端”。

1.创建一个Java类作为我们的“ api”端点。 在我们的例子中,我们只有一个返回静态数据集的对象。 十分简单。

@RestController
@RequestMapping("/api")
public class DemoResource {...

2.添加一种方法来返回我们的“学生”。

/*** GET  /students : get all the students.** @return the ResponseEntity with status 200 (OK) and the list of students in body*/@JsonView(Student.Info.class)@RequestMapping(value = "/demostudents",method = RequestMethod.GET,produces = MediaType.APPLICATION_JSON_VALUE)@Timedpublic List<Student> getAllStudents() {log.debug("REST request to get all Students");List<Student> userStudents = new ArrayList<Student>();Student student = new Student();student.setFirstName("Joe");student.setLastName("Smith");student.setSex(0);student.setGrade(3);userStudents.add(student);return userStudents;}

3.保存并启动微服务。 它看起来应该像这样:

----------------------------------------------------------Application 'extendedDayAPI' is running! Access URLs:Local: 		http://127.0.0.1:8081External: 	http://192.168.1.4:8081
----------------------------------------------------------
2016-09-14 11:36:13.927  INFO 13980 --- [  restartedMain] com.wwc.extendedday.ExtendedDayApiApp    : 
----------------------------------------------------------Config Server: 	Connected to the JHipster Registry config server!
----------------------------------------------------------

4.再次重新访问http:// localhost:8761 /#/ applications或刷新视图。 请注意我们的微服务如何注册自己。

jhipsterseriespart2-6

5.转到浏览器,然后输入http://localhost:8080/yourappapiname/api/demostudents 。 请注意,即使您已登录,也将被禁止。

jhipsterseriespart2-7

6.注销localhost:8080 ,然后在打开Chrome的情况下重新登录。

然后检查登录呼叫并在“授权”中获取令牌。 它应该以“ Bearer…”开头,然后是一堆编码的东西。 全部选择。

您必须在请求中传递此令牌。 有许多不同的方法可以通过您的代码来执行此操作。 在我们的测试场景中,

  • 邮差足以向您显示输出。
  • 开放邮递员
  • 从上方输入您的API调用
  • 在“标题”下,添加“授权”密钥,然后粘贴您获取的令牌。

您应该会看到以下内容:

jhipsterseriespart2-8

呜呜! 你完成了! 您已经使用jHipster创建了微服务。

结论

我们已经逐步使用JHipster的可用选项创建微服务来创建微服务体系结构。 我希望您发现此信息对您有所帮助。

在这一点上,我们可以添加任意数量的微服务。 每个端口都有其自己的端口号和功能。 在分布式环境中,当我们对它们进行更改时,会有许多实例可以启动/关闭。 希望您能看到将我们架构的不同层分离的好处和灵活性。 每一层都不依赖于另一层来运行。

微服务,网关,注册表以及使用不同前端的主题的确开始超出使用JHipster的基本方法。 有关这些主题的更多信息,请查看免费的Keyhole博客和白皮书 。

使用JHipster时,请回头看第3部分,其中包括技巧,窍门和陷阱。 祝您有美好的一天并继续保持“嘻哈”。

翻译自: https://www.javacodegeeks.com/2016/10/getting-started-jhipster-part-2.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/352175.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

由于html元素加载导致的问题

js中要求执行的事件是在完全加载完&#xff0c;但由于本地环境测试一直没发现出问题&#xff0c;在上线后由于网络延迟导致元素加载慢&#xff0c;而事件执行完&#xff0c;没达到预期目标。 这时就需要用到属性 readyState readyState 属性返回当前文档的状态&#xff08;载入…

Linux下MySQL数据库常用基本操作 一

1、显示数据库 show databases; 2、选择数据库 use 数据库名; 3、显示数据库中的表 show tables; 4、显示数据表的结构 describe 表名; 5、显示表中记录 SELECT * FROM 表名 6、建库 create databse 库名; 7、建表 create table 表名 (字段设定列表)&#xff1b;mysql> cr…

C语言读取txt文档中的数据

1.说明 txt文档中的数据格式&#xff1a;前后数据用空格隔开&#xff1b;数据来源&#xff1a;matlab读取彩图的R、G、B三层的像素值&#xff0c;分别存放在三个txt文档中&#xff0c;用C读取到一维数组。动态申请数组&#xff0c;还是需要预先知道数组的大小&#xff0c;比静态…

cpickle支持的python版本_Python序列化模块pickle和cPickle

Python的序列化是指把变量从内存中变为可以储存/传输的数据/文件的过程. 在Python中叫pickling&#xff0c;在其他语言中也被称之为serialization&#xff0c;marshalling&#xff0c;flattening等等&#xff0c;都是一个意思。序列化之后&#xff0c;就可以把序列化后的内容写…

Intellij IDEA 4种配置热部署的方法

Intellij IDEA 4种配置热部署的方法 热部署可以使的修改代码后&#xff0c;无须重启服务器&#xff0c;就可以加载更改的代码。 第1种&#xff1a;修改服务器配置&#xff0c;使得IDEA窗口失去焦点时&#xff0c;更新类和资源 菜单Run -> EditConfiguration , 然后配置指定服…

mysql启动报错:Another MySQL daemon already running with the same unix socket.

[rootlocalhost ~]#/etc/init.d/mysqld restart Stopping mysqld: [ OK ] Another MySQL daemon already running with the same unix socket. Starting mysqld: [FAILED] 原因多个Mys…

malloc申请一维动态数组的错误

正确写法&#xff1a;int *tmp ( int * )malloc( H*W*sizeof(int) ); float *tmp ( float * )malloc( H*W*sizeof(float) ); double *tmp ( double * )malloc( H*W*sizeof(double) ); 错误写法&#xff1a;double *tmp ( double * )malloc( H*W*sizeof(double * ) ); 错…

java检查注入sql框架_Java:检查器框架

java检查注入sql框架我在JavaOne 2012上 了解的有趣的工具之一是Checker Framework 。 Checker Framework的网页之一 指出 &#xff0c;Checker Framework“增强了Java的类型系统&#xff0c;使其更加强大和有用”&#xff0c;从而使软件开发人员“能够检测并防止Java程序中的错…

jqc3ff继电器引脚图_电气元件中间继电器的知识全面解读,欢迎电工朋友收藏!...

继电器(英文&#xff1a;Relay)&#xff0c;也称电驿&#xff0c;是一种电子控制器件&#xff0c;它具有控制系统(又称输入回路)和被控制系统(又称输出回路)&#xff0c;通常应用于自动控制电路中&#xff0c;它实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路…

]remove-duplicates-from-sorted-list-ii (删除)

题意略&#xff1a; 思路都在注解里&#xff1a; #include<iostream> #include<cstdio> using namespace std;struct ListNode {int val;ListNode *next;ListNode(int x) : val(x), next(NULL) {}};class Solution {public:ListNode *deleteDuplicates(ListNode *h…

C语言动态数组建立方法

动态数组是指在声明时没有确定数组大小的数组&#xff0c;即忽略圆括号中的下标&#xff1b;当要用它时&#xff0c;可随时用ReDim语句&#xff08;C语言中用malloc语句&#xff09;重新指出数组的大小。使用动态数组的优点是可以根据用户需要&#xff0c;有效利用存储空间。 动…

Linux小宝典之理解Chroot模式

Chroot 在 Linux 系统中发挥了根目录的切换工作&#xff0c;同时带来了系统的安全性等好处。本文通过编写 chroot 来理解 chroot 的作用和好处&#xff0c;这不仅有助于更好的使用 chroot&#xff0c;同时加深了对 Linix 系统初始 RAM 磁盘工作的认识。 chroot&#xff0c;即 …

jHipster入门,第1部分

因此&#xff0c;您想保持技术的领先地位&#xff0c;但对所有活动部件感到不知所措。 你真幸运&#xff01; 这是jHipster发光的地方。 如果您喜欢Ruby on Rails或Grails的方法来快速启动和运行应用程序&#xff0c;那么这可能是适合您的选择。 jHipster旨在使设置应用程序变…

python每隔30s检查一次_用Python写一个“离线语音提示器”来提醒我们别忘记了时间...

前言本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。环境&#xff1a;Win7系统&#xff0c;外网未连接&#xff0c;主机接有返听音箱。准备&#xff1a;这里明显要用语音合成&#xff0c;既然是离线状态…

vue中map组件

分享一个比较好用的基于百度地图的vue组件。也有react版本的&#xff0c;可以自行选择。 分享链接&#xff1a;点击转载于:https://www.cnblogs.com/yunnex-xw/p/9996600.html

MATLAB中mean的用法

1、函数功能 求数组的平均数或者均值 2、使用方法 ① M mean(A) 返回沿数组中不同维的元素的平均值。 如果A是一个向量&#xff0c;mean(A)返回A中元素的平均值。 如果A是一个矩阵&#xff0c;mean(A)将其中的各列视为向量&#xff0c;把矩阵中的每列…

Linux中profile、bashrc、bash_profile之间的区别和联系

/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置. 英文描述为&#xff1a; # /etc/profile # System wide environment and startup programs, for login setup # Functions and alias…

python selenium 等待元素出现_Python Selenium等待加载几个元素

考虑到Mr.E.和Arran的评论&#xff0c;我在CSS选择器上完全遍历了列表。棘手的部分是关于我自己的列表结构和标记(更改类等)&#xff0c;以及动态创建所需的选择器并在遍历期间将它们保存在内存中。我通过搜索任何未加载状态的内容来处理等待几个元素的问题。您也可以使用“&am…

网络操作系统第242页作业

1.简述电子邮件的工作原理。 答&#xff1a;用户编辑的E mail被转换成一个标准的邮件格式&#xff0c;这个邮件格式中可以包含各种样式的文件&#xff0c;如图像&#xff0c;声音&#xff0c;可执行程序等。邮件的内容以各种编码方式转换成ASCII码的形式&#xff0c;以便在网络…

MATLAB中median函数的用法

1.功能 求矩阵的中间值。 2.格式 ①median(M) 每一列返回一个值,为M该列的从大到小排列的中间值. ②median(M,dim) dim为1&#xff0c;2。其中1表示按每列返回一个值,为该列从大到小排列的中间值,, 2表示按每行返回一个值,为该行从大到小排列的中间值. 注意:如果行或列的个数为…