标签:out case pkg 用户中心 core lex XML 根据 端口
现在我所在的xx公司要重构用户系统。旧用户系统是一个单一应用系统。下游的各个系统通过调用用户系统实现对用户查询、登录、校验、菜单的管理。为了适应新的企业级架构模式,用微服务架构对旧用户系统进行重构。
其实,从单一应用系统到微服务架构的搭建,锻炼的是重构一个旧的单一应用项目的思路:单一应用==》微服务架构应用。
过程如下:
1、从熟悉原有的项目:需求文档、操作手册、数据库设计文档、对外接口、页面原型(对系统进行实操)、对外接口的调用原理。(这里因为我对用户系统不是很熟悉,所以需要从各个方面熟悉用户系统各个功能,如果是对准备金系统进行重构,则简单很多,因为我对准备金系统的功能、表结构设计都非常熟悉(表都是我设计的),而且准备金系统不需要调用其他的微服务来包装本系统的功能)
2、编写开发进度文档;
3、编写新用户系统微服务搭建开发设计文档;
4、查看总公司微服务架构、前后端开发规范、所在公司的架构搭建文档、规范;
4、熟悉微服务架构,各种组件。
5、搭建微服务。
搭建过程中遇到了很多问题,下面对主要的几个进行记录说明。(因为我只在17年接触过一个SOA架构的项目,后来一直在做OA,用的SSM,也没有接触过微服务,对SpringBoot,SpingCloud并不是很熟悉,一切从零开始,Go!!!)。
开发工具:idea
jdk版本:jdk8
jar包管理:mavn仓库
微服务架构:Springboot+SpringCloud
话不多说,咱们本地现在只有一个开发环境(idea、jdk、maven仓库),其他一无所有。我们的项目是前后端分离的,下面先搭建后端架构。
本地也好多软件没安装,各种百度,,,安装,,,报错,,配置,,。搭过本地项目的应该都了解。
1、公司架构部门提供了微服务框架的demo,下载demo,导入,
2、配置JDK;
3、配置maven仓库;pom.xml文件报错,不要慌,配置下JDKmaven-Reimport,导入SpringBoot与SpringCloud及相关依赖。
4、所有配置都OK了,启动项目。
5、很完美,开始进入报错、修改、重启、再报错阶段。
6、下面是我的配置文件
application-dev.properties
#配置服务端口
server.port= 31010
# 注册中心配置
#开发,本地开发时不需要注册
eureka.client.service-url.defaultZone=http://localhost:21000/eureka/
#获取主机ip作为地址注册到注册中心
eureka.instance.prefer-ip-address=true
eureka.instance.instance-id=${spring.cloud.client.ipAddress}:${server.port}
info.version=@project.version@
eureka.client.register-with-eureka=false
eureka.client.fetchRegistry=false
eureka.client.server.waitTimeInMsWhenSyncEmpty=0
# 获取注册信息间隔时间 default 30
#eureka.client.registry-fetch-interval-seconds=30
# 更新实例变化到服务端 default 30
#eureka.client.instance-info-replication-interval-seconds=30
# 动态刷新eureka的serviceURl地址的间隔时间 与Config集成需要 default 300
#eureka.client.eureka-service-url-poll-interval-seconds=300
#开启健康检查(需要spring-boot-starter-actuator依赖)
#eureka.client.healthcheck.enabled = true
#租期更新时间间隔(默认30秒)
#eureka.instance.lease-renewal-interval-in-seconds =30
#租期到期时间(默认90秒)
#eureka.instance.lease-expiration-duration-in-seconds =90
#数据库配置
spring.datasource.url= jdbc:postgresql://127.0.0.1:5432/imsdb
spring.datasource.username= postgres
spring.datasource.password= root
spring.datasource.driver-class-name= org.postgresql.Driver
mybatis.type-aliases-package= cn.com.piccre.template.entity
mybatis.mapper-locations=classpath:/mapper/*Mapper.xml
mybatis.configuration.map-underscore-to-camel-case=true
#日志扫描
logging.level.=info
logging.level.cn.com.piccre.template.dao=debug
logging.config=classpath:logback-dev.xml
#apollo配置中心
apollo.bootstrap.enabled = true
#### apollo server地址
apollo.meta=http://10.129.202.74:8080
### apollo server的应用id
app.id=ServiceTemplate
#redis配置
spring.redis.host=10.129.202.73
spring.redis.port=6379
spring.redis.password=picc123456
spring.redis.timeout=2000
#调用公司用户中心的接口地址
#7.3用户登录检查(按用户名和密码形式)—非集成单点(checkLoginByPwd)接口地址
check_user_url=http://10.129.202.72:4789/UserTransferServer/userService/check
#3.3根据用户获取菜单(getMenuByUser)
get_menu_url=http://10.129.202.72:4789/UserTransferServer/userService/menu
#10.4根据用户代码获取用户详细信息(getUserMsg)
get_user_info=http://10.129.202.72:4789/UserTransferServer/userService/userInfo
#密钥文件用于加密token,将demo附带的密钥文件放于本地目录,只在登录时生成token用到
keyPublicPath=F:/cjp/key.pub
keyPrivatePath=F:/cjp/key.pri
bootstrap.properties文件:用以本地测试时切换配置文件application.properties
spring.cloud.config.enabled=false
spring.cloud.config.fail-fast=false
#配置项目的id,注册到eureka时显示的名字,保证注册到eureka时是不重复的
spring.application.name=demo-client
#以下为设置启用哪个环境的配置文件,应保证只开启一个
#开发,即application-dev.properties生效
spring.profiles.active=dev
#configType=dev
#测试,即application-test.properties生效
#spring.profiles.active=test
#configType=test
#生产,即application-prod.properties生效
#spring.profiles.active=prod
#configType=prod
com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused: connect at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:187) at com.sun.jersey.api.client.filter.GZIPContentEncodingFilter.handle(GZIPContentEncodingFilter.java:123) at com.netflix.discovery.EurekaIdentityHeaderFilter.handle(EurekaIdentityHeaderFilter.java:27) at com.sun.jersey.api.client.Client.handle(Client.java:652) Caused by: java.net.ConnectException: Connection refused: connect at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:111) at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications(EurekaHttpClientDecorator.java:134) at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$6.execute(EurekaHttpClientDecorator.java:137) at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77) at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications(EurekaHttpClientDecorator.java:134) at com.netflix.discovery.DiscoveryClient.getAndStoreFullRegistry(DiscoveryClient.java:1013) com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused: connect at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:187) at com.sun.jersey.api.client.filter.GZIPContentEncodingFilter.handle(GZIPContentEncodingFilter.java:123) at com.netflix.discovery.EurekaIdentityHeaderFilter.handle(EurekaIdentityHeaderFilter.java:27) at com.sun.jersey.api.client.Client.handle(Client.java:652) Caused by: java.net.ConnectException: Connection refused: connect at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
原因如下:本地导入项目后,并没有对配置文件做任何改动,看配置文件,发现本地根本没有配置服务中心,故不停报上述异常。
解决:关闭eureka注册中心。配置里添加标黄的配置(不向注册中心发布服务,问题解决)
org.postgresql.util.PSQLException: Connection to 127.0.0.1:5433 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections. at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:280) at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49) at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:211) at org.postgresql.Driver.makeConnection(Driver.java:458) at org.postgresql.Driver.connect(Driver.java:260) org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.postgresql.util.PSQLException: Connection to 127.0.0.1:5433 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections. at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80) at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:342)
查询是测试环境数据库挂了,好解决,本地安装一个PostgreSQL。(出现JDBC相关的,肯定跟数据库的配置有关)
重启服务,报下述错误。
安装PostgreSQL见链接:
https://www.runoob.com/postgresql/windows-install-postgresql.html
https://blog.csdn.net/qq_36330643/article/details/72763155
https://www.postgresql.org/ftp/source/v10.10/
2020-01-22 09:59:20.904 INFO [service-template] 11176 [RMI TCP Connection(1)-10.129.206.99] com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting... 2020-01-22 09:59:21.901 INFO [service-template] 11176 [RMI TCP Connection(1)-10.129.206.99] com.zaxxer.hikari.pool.PoolBase - HikariPool-1 - Driver does not support get/set network timeout for connections. (这个 org.postgresql.jdbc.PgConnection.getNetworkTimeout() 方法尚未被实作。) 2020-01-22 09:59:21.919 INFO [service-template] 11176 [RMI TCP Connection(1)-10.129.206.99] com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed.
前台提示:
exception":"org.springframework.transaction.CannotCreateTransactionException","message":"Request processing failed;
nested exception is org.springframework.transaction.CannotCreateTransactionException:
Could not open JDBC Connection for transaction; nested exception is java.sql.SQLTransientConnectionException:
HikariPool-1 - Connection is not available, request timed out after 30000ms.","path":"/demo/user/login"}
原因如下:因为我安装的PostgreSQL是最新版本,跟demo的依赖版本不匹配。从maven官网重新下载了标黄的依赖,问题解决。
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.4.1212.jre7</version>
</dependency>
<!--<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.9.jre7</version>
</dependency>-->
The server doesn‘t grant access to the database: the server reports FATAL: no pg_hba.conf entry for host "192.168.0.123", user "postgres", database "postgres" FATAL: no pg_hba.conf entry for host "192.168.0.123", user "postgres", database "postgres"
PostgreSQL数据库为了安全,它不会监听除本地以外的所有连接请求,当用户通过JDBC访问是,会报一些如下的异常:
org.postgresql.util.PSQLException: FATAL: no pg_hba.conf entry for host
要解决这个问题,只需要在PostgreSQL数据库的安装目录下找到/data/pg_hba.conf,找到“# IPv4 local connections:”
在其下加上请求连接的机器IP
host all all 127.0.0.1/32 md5
32是子网掩码的网段;md5是密码验证方法,可以改为trust
如下图:红色部分都是我修改的。
解决完上述问题,项目终于成功启动,不再报错。
在没有搭建前端开发框架的时候,可以通过postman等工具进行测试。
get方式访问:
前端用的是Vue框架。
搭建前端框架很顺利,公司提供了项目Demo。分为下面几步:
解压webProject到自己工作目录,例如:D:\workspace\webProject打开Sublime->file->open folder找到刚才解压的webProject目录,选择导入完成。
打开cmd命令行,cd到webProject目录下
输入命令:yarn 回车,等待下载完成。
打开cmd命令行,cd到webProject目录下
输入命令:yarn serve
回车,等待启动完成。
完成后可以访问默认地址:http://localhost:8080
打开cmd命令行,cd到webProject目录下
输入命令:npm run build
回车,等待打包完成,会在webProject目录下生成一个dist文件夹这个就是打包好的文件,将整个dist上传到nginx服务器配置好的目录下就可以了,由于前端打包好的文件是静态的所以不需要重启即可生效。
通过安装软件,直接启动项目即可。
1、在项目导入,启动时,用到了命令yarn ,命令行执行,报错,,,没有安装yarn。。需要自己下载安装。
参看链接:https://yarnpkg.com/zh-Hans/docs/install#windows-stable
2、打包时用到了命令npm,需要学习了解。
3、访问http://localhost:8080报错。解决:需要在vue.config.js中配置下后端应用的地址
上面提到的这些软件工具一个没用过,下面进入学习阶段。
1、node.js是什么?npm?
2、开发Vue的工具?
3、什么是yarn?
参看链接:https://www.cnblogs.com/vole/p/12228658.html
1、
1、日志监控
ELK+skywalking
2、服务跟踪
3、apollo
centos
标签:out case pkg 用户中心 core lex XML 根据 端口
原文地址:https://www.cnblogs.com/vole/p/12222661.html