Spring-Cloud-Alibaba笔记02-项目设想尝试

Spring-Cloud-Alibaba笔记02-项目设想尝试

对于Spring Cloud Alibaba的组件来说,也就辣么几个,Nacos+Dubbo+Sentinel 就差不多了。

然后,这里试着对简单的微服务做个设想。

首先对于设想

直接看图吧。大概就是这个样子 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

在这里插入图片描述

这里面画出来的,还是缺少了一些东西的,比如网关,负载啥的!!!

欢迎提提建议,推荐些好玩的组件。


尝试

主要的核心就是Nacos+Dubbo了,Sentinel 在上一篇笔记中已经搞定了的。

还有就是项目中的Dubbo接口独立分包,进行统一管理,多项目实现-调用。

至于里面各个项目 admin ,api,ser1-n 只要能连上Nacos+Dubbo 就可以了,具体各个项目内使用的技术可以随便了。

项目结构

在这里插入图片描述
查不多就是这个样子,作为一个demo试试。

其中,api和pubSer为前笔记的demo,这里直接复制过来作为接口的实现与消费。

而admin项目,为旧项目修改,接入的。

由于就的项目使用的spring boot 版本为2.0.2 ,所有吧对应的一些版本都调低了。

具体版本的问题查看文章:https://blog.csdn.net/qq_37143673/article/details/99292705

或者官方说明的地址:https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E

公共接口

这个只是个定义,正的只是个接口的定义!!!

public interface UserService {
    String test(String message);
	......
}

接口实现

作为实现接口的项目,使用的前笔记的项目,这里就再贴一下,主要的代码吧!

@Service(group = "userServer-xiaohang" ,retries = 0,timeout = 10000)
public class UserServiceImpl implements UserService {
    @Override
    public String test(String message) {
        return "this is provider service's information:"+message;
    }
.........

罒ω罒,其实就是自动生成的demo项目 。。。

Dubbo调用

使用一整套,spring cloud alibaba 的项目,只要一个注解就可以调用。

【需要加载的包,和配置请查看上一篇笔记,或者直接去生成个demo项目也有的】

@RestController
public class DubboTest {

    @Reference   // 就是这注解,注入远程的服务
    private UserService userService;

    @RequestMapping("/getDubboTest")
    public String getXhUser() {
        return userService.test("Consumer's Test!!");
    }
..........

旧项目admin 调整并入

新的项目的使用都没有啥问题,但是在把旧项目并入的时候就发现了问题

Nacos 可以使用,但是Dubbo总是如法注册,调用服务报错空指针。

修改的内容:

pom文件的调整

感觉里面还是多加载了部分包,但本着能用就行了,没有去删减掉。

		<dependency>
			<groupId>com.alibaba.cloud</groupId>
<!--			<groupId>org.springframework.cloud</groupId>-->
			<artifactId>spring-cloud-starter-dubbo</artifactId>
			<version>2.0.2.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-openfeign</artifactId>
			<version>2.0.2.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>com.alibaba.spring</groupId>
			<artifactId>spring-context-support</artifactId>
			<version>[latest version]</version>
		</dependency>
.....
<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>com.alibaba.cloud</groupId>
				<artifactId>spring-cloud-alibaba-dependencies</artifactId>
				<version>2.0.2.RELEASE</version>
				<type>pom</type>
				<scope>import</scope>
							<exclusions>
									<exclusion>
										<groupId>com.alibaba.cloud</groupId>
										<artifactId>spring-cloud-starter-dubbo</artifactId>
									</exclusion>
								</exclusions>
			</dependency>
			<dependency>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-dependencies</artifactId>
				<version>2.0.2.RELEASE</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
</dependencyManagement>
启动调整:
Reference@EnableDubbo    //新增的
@DubboComponentScan 	//新增的  就是这个注解没有,导致@Reference注解无效的 我也不知道为什么
@SpringBootApplication
@EnableDiscoveryClient  //服务发现的
@EnableCaching
public class CosonleApplication extends SpringBootServletInitializer  {
。。。。。。。
配置:
项目使用的yml配置的
新增的内容:
spring:
  cloud:
    nacos:
      discovery:
        server-addr: http://192.168.1.180:8848
    sentinel:
      transport:
        port: 8992
        dashboard: 10.0.100.208:8080  # 控制台地址
      eager: true
dubbo:
  application:
    name: happyPay-sentinel-xiaohang-cloud-test
  registry:
    address: nacos://192.168.1.180:8848
  protocol:
    name: dubbo
    port: -1
代码测试:
@Service
public class dubboService {

    @Reference(group = "userServer-xiaohang")   //默认不指定group的,没有关系
    private UserService userService;

    public void dubbotest(){
        System.out.println("小杭测试 springcloud dubbo 的使用!!!!!");
        System.out.println(userService.test("Consumer's Test!!"));
 。。。。。。。。

此服务也可以在正常的控制层注入

    @Autowired
    com.ibeetl.cms.service.dubboService dubboService;

小结

试一下就可了的。

尝试Nacos+Dubbo+Sentinel是可以的。这样就可以简单的吧一堆的旧项目搞一起了。

至于更多的整合,就需要在业务上进行拆分了,至少简单并入,依照以上是没问题的。

还有各种的组件,比如MQ,MyCAT,Redis等等等 项目够大采用的到

小公司的项目,需要吗 ╮(╯_╰)╭

图片中的其他业务拆分,是个人对常用项目的理解上拆分的。看看就好,无需纠结。


2020-05-29 小杭


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小_杭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值